icpc:problems:usaco21open_acowdemia_i_b
目录
problems | |
---|---|
名称 | Acowdemia I B |
题目编号 | USACO21OPEN_B1 |
题目链接 | zl.zhili-edu.com/… |
来源 | USACO |
算法分类 | 枚举, 入门_循环 |
难易程度 | 容易 |
Acowdemia I B
想法
排序后观察$c_i$与已枚举的个数关系,当出现$c_i$小时,对$c_i$相同的元素进行增加,当增加后还不满足条件,说明已经找到最大的h。
代码实现
#include<cstdio> #include<algorithm> using namespace std; const int N = 1e5 + 10; int line[N]; int main() { int n, l, h = 0; scanf("%d %d", &n, &l); for (int i = 1; i <= n; ++i) scanf("%d", &line[i]); sort(line+1, line+1+n); for (int i = n; i >= 1; --i) { if(line[i] < (n - i + 1)) { if(line[i] + 1 < (n - i + 1)) break; for(int j = i+1; j <= n; j++) { if(line[j] == line[j-1]) { l--; line[j-1]++; } else break; } if(l <= 0) break; h = n - i + 1; } else h = n - i + 1; } printf("%d", h); return 0; }
/app/www/public/data/pages/icpc/problems/usaco21open_acowdemia_i_b.txt · 最后更改: 2023/06/28 05:26 由 温婕莺