1 条题解
-
0
解题思路
设 为能够进入院子的最大老太太人数。如果玛丽亚·伊万诺夫娜一次性叫来这 个人,那么每个人在进入时都会看到 个人(包括她自己?注意题目中的“其他老太太”不包括自己,但包括玛丽亚)。由于 是最大答案,那么这些老太太中的每一个人都必须满足 (否则这些老太太根本没有办法聚集到院子里)。因此,一次性叫所有人这样操作是可行的。
注意,如果按照 对老太太排序,那么玛丽亚需要叫的前 个人就是排序后的前 个老太太。当且仅当第 个人的要求 时,她可以叫这 个人(否则,当这 个人都到达后,最后一个人会不满意)。为了找到最大的 ,我们可以进行线性搜索。
总时间复杂度为每个测试用例 (排序开销),也可以优化到 使用计数排序,但 的总和不超过 ,因此两种方法均可。
#include <iostream> #include <vector> #include <algorithm> using namespace std; void solve() { int n; cin >> n; vector<int> arr(n); for (int &el : arr) cin >> el; sort(arr.begin(), arr.end()); for (int i = n - 1; i >= 0; i--) { if (arr[i] <= i + 1) { cout << i + 2 << '\n'; return; } } cout << 1 << '\n'; } int main() { int t; cin >> t; while (t--) solve(); }
- 1
信息
- ID
- 6876
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者