题目描述
小爱有 n 只苹果,每只苹果都有各自的保质期,第 i 只的保质期为 ai,若 ai=0 意味着它必须在第一天吃掉,不然就变质了,若 ai>0 意味着它可以保存 ai 天。
小爱每天只能吃一只苹果,她应该如何安排,使得吃到的苹果最多?
(22年9月24日:修改了题面,使题意更好理解,题目没有变化)
输入格式
第一行:单个整数 n;
第二行:n 个整数 a1,a2,⋯,an。
输出格式
单个整数:表示能够吃掉的最多的苹果数。
数据范围
- 对于30% 的数据,1≤n≤10;
- 对于 60% 的数据,1≤n≤1,000;
- 对于 100%1的数据,1≤n≤1,000,000,0≤ai≤n。
样例数据
输入:
5
4 1 0 2 1
输出:
4
题解
本题关键点:对苹果的保质期做排序,代码如下。
#include <iostream>
using namespace std;
int a[1000010];
int main()
{
int n,t;
int ans=0;
cin>>n;
for (int i=1;i<=n;i++)
{
cin>>t;
a[t]++;
}
for (int i=1;i<=n;i++)
{
ans+=a[i-1];
if (ans>i){
ans=i;
}
}
cout<<ans<<endl;;
return 0;
}