0
点赞
收藏
分享

微信扫一扫

A1117 Eddington Number (25 分| 逻辑题,附详细注释,逻辑分析)


写在前面

  • 思路分析
  • 对数组从大到小排序
  • 枚举天数day从1到n,当a[day] <= day时,ans = day-1即为最大的day
  • 要么卡顿,要么满分

测试用例

input:
10
6 7 6 9 3 10 8 2 7 8
output:
6

ac代码

  • 参考代码1:​​小于等于号​

#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

bool cmp(int a, int b)
{
return a>b;
}
int main()
{
int n;
scanf("%d", &n);
vector<int> v(n+1);
for(int i=1; i<=n; i++)
scanf("%d", &v[i]);
sort(v.begin()+1, v.end()+1,cmp);

for(int day = 1; day<=v.size(); day++)
if(v[day]<=day)
{
printf("%d", day-1);
break;
}
return 0;
}

  • 参考代码2:​​大于号​

#include <iostream>
#include <algorithm>
using namespace std;
int a[1000000];
int main()
{
int n, e = 0;
scanf("%d", &n);
for(int i = 0; i < n; i++)
scanf("%d", &a[i]);
sort(a, a+n, greater<int>());
while(e < n && a[e] > e+1) e++;
printf("%d", e);
return 0;
}

知识点小结

int a[maxn];
sort(a+1,a+n+1,cmp); //从大到小排序

// 从大到小排序
int a[1000000];
sort(a, a+n, greater<int>());


举报

相关推荐

0 条评论