纸牌游戏
解题思路
这道题看似奇奇怪怪,但实际上是一道贪心。我们取最右端,如果实在走不下去就使用魔法。记录使用魔法的点,输出即可。
code
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,a[100010],ans;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
cin>>n;
ans=0;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)
if(a[i]>=i-1)
ans++;
cout<<ans<<endl;
}