原题
题目大意及思路
- 题目大意: 从n到1找到第一个i使得大于i的数>=i
- 思路: 用一个count来记录现有的比i大的数,从n往前找到第一个
i<=count
的数
代码
#include<iostream>
#include<vector>
using namespace std;
int main(){
int n;
cin>>n;
vector<int> a(n+2);
for(int i=0;i<n;i++){
int data;
cin>>data;
if(data>n) a[n+1]++;
else a[data]++;
}
int count=a[n+1],ans=n;
while(count<ans) count+=a[ans--];
printf("%d\n",ans);
return 0;
}
运行截图
收获
- 在判断条件及变化的语句书写之前,要好好斟酌一下怎么写才是最恰当最正确的。