【题解】2020牛客NOIP赛前集训营-普及组(第二场)
虽然这场比赛不停出锅,并且(std)被连续(hack)(一半的题被hack掉),但还是有点做头的。
于是我就按自己的思路重新理一遍。
T1
没什么说头,没满的回家玩泥巴吧肯定是细节出了问题。
T2
这道题开始题目有歧义,然后我被误导了,但第二遍看题的时候打出了(std),因为代码太过于简单,以为我错了,可是考场下来,本以为不会(A)的奇迹般地和(std)重合了。
思路其实很简单,首先把(a_i)按从大到小排一遍,可知比(a_i)大的人在贪心拿牌的时候都会一起拿他,那么此时拿牌的人如果比他本身的(a_i)多的话,他就会在每一轮中掉牌,最终会走向死亡。。。
于是,给出代码
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN = 1e5 + 5;
int n, a[MAXN], ans;
bool cmp(int x, int y) {
return x > y;
}
int main() {
scanf ("%d", &n);
for (int i = 1; i <= n; i++) {
scanf ("%d", &a[i]);
}
sort (a + 1, a + 1 + n, cmp);
for (int i = 1; i <= n; i++) {
if (a[i] >= i - 1) ans++;
}
printf ("%d
", ans);
return 0;
}