题意:
给你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;
}