题意:有一个排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; }
时间: 2024-11-05 12:31:55