8 389 207 155 300 299 170 158 65
2
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1257
思路:贪心,每次除去小于等于当前高度的导弹,有几趟就需要多少套拦截系统
#include<cstdio> #include<iostream> using namespace std; int main() { int n; while(scanf("%d",&n)==1) { if(n==0) {printf("0\n");continue;} int num[10005]; int mm,p=0; int cnt=1,tmp; scanf("%d",&mm); for(int i=1;i<n;i++) { scanf("%d",&tmp); if(tmp<=mm) mm=tmp; else{ num[p++]=tmp; } } num[p]='\0'; int i=0; mm=num[0]; int q=0; while(num[0]) { if(i==p) { cnt++; num[q]='\0'; p=q; i=0; mm=num[0]; q=0; } if(num[i]<=mm) mm=num[i]; else { num[q++]=num[i]; } i++; } printf("%d\n",cnt); } return 0; }
#include<stdio.h> #include<string.h> int main() { int i,n,count,a[3005],t,max; while (scanf("%d",&n)!=EOF) { for (i=1;i<=n;i++) { scanf("%d",&a[i]); } count=0; t=n; while(t) { max=30001; count++; for (i=1;i<=n;i++) { if (a[i]>0&&a[i]<max) { max=a[i]; a[i]=-1; t--; } } } printf("%d\n",count); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/u010579068/article/details/49249443