题解:B3959 [GESP202403 四级] 做题

· · 题解

思路

贪心,先排序,再按题目所述,第 k 天需完成 k 道题。如果我们发现途中有偷懒的行为,就拒之不加;否则,我们让这一天内就做一道题。

注意:最终结果 sum 要初始化为 1,且在输出时要 -1。

代码

#include<bits/stdc++.h>
using namespace std;
int sum=1,n,a[1000010];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    sort(a+1,a+n+1);
    for(int i=1;i<=n;i++){
        if(a[i]<sum)continue;
        else sum++;
    }
    cout<<sum-1<<endl;
}