题意:有一个排n个建筑 每个高不定 现在要消去全部建筑
方法有两种 1 消去高度为某值的全部方块
2 消去一整个建筑
问 如何通过最少步骤消去
思路:首先将数组从大到小排序
if(i+a[i]<ans) ans=i+a[i];
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int a[1000000+100];
int cmp(int a,int b)
{
return a>b;
}
int main()
{
int n;
int i,j,k;
while(scanf("%d",&n)!=EOF)
{
int ans;
for(i=0;i<n;i++) scanf("%d",&a[i]);
sort(a,a+n,cmp);
ans=a[0];
//printf("%d\n",ans);
for(i=1;i<n;i++)
{
if(i+a[i]<ans) ans=i+a[i];
}
if(ans>n) ans=n;
printf("%d\n",ans);
}
return 0;
}