如果HDU寄了,大家可以去台州学院OJ上面做,tzoj2094,一样的题
这个题没啥好讲的,很简单,直接上代码了
这个题俺的状态数组是f[i],表示当前能防住多少米的导弹
然后就是用数组或者优先队列给他存起来,如果能防住,把高度改一下,然后把当前能防住的所有高度排个序,整就完了
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const int N = 1100;
int bomb[N];
int f[N];
int n;
int main()
{
while(cin>>n){
sizeof(f , 0 , sizeof f);
int size = 0;
for(int i = 1 ; i <= n; i++){
cin>>bomb[i];
}
for(int i = 1 ; i <= n ; i++){
int flag = 0;
for(int j = 0; j < size ; j++){
if(f[j] >= bomb[i])
{
// cout<<"bomb height "<<bomb[i]<<" change the hight "<<f[j]<<" to "<<bomb[i]<<endl;
f[j] = bomb[i];
flag = 1;
break;
}
}
if(!flag){
// cout<<"bomb height "<<bomb[i]<<"need to setup another denfense"<<endl;
f[size++] = bomb[i];
}
sort(f , f+size);
// cout<<"now has so as "<<endl;
// for(int j = 0 ; j < size ; j++)
// cout<<f[j]<<' ';
// cout<<endl;
}
cout<<size<<endl;
}
}