您的位置:首页 > 其它

HDU 1257 最少拦截系统

2016-07-27 18:45 232 查看
题意:

给你n个依次飞来的导弹高度,问你需要多少套系统才能拦截所有的导弹。

思路:

正解应该是求有几个最长下降子序列,dp来做。我这里是直接模拟一遍,开数组存每套系统当前能射的高度。

#include<cstdio>

const int MAX=100005;
int n,a,b[MAX];

int main(){
while(~scanf("%d",&n)){
int cnt=0;
for(int i=0;i<n;i++){
scanf("%d",&a);
bool flag=false;
int Min=-1;
for(int j=0;j<cnt;j++){
if(b[j]>a){
if(Min==-1||b[Min]>b[j]) Min=j;
flag=true;
}
}
if(flag) b[Min]=a;
else b[cnt++]=a;
}
printf("%d\n",cnt);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: