这又是一道坑爹题呀,题目太难理解了,本人理解力有限,搞了半天才懂。
题目给你一个序列,分别是导弹的高度,要求你使用尽量少的拦截系统拦截所有导弹,对于每个导弹,你选择一个拦截系统拦截,如果当前有的拦截 系统都拦截不了,那么久增加一个新拦截系统。根据上面的思路,我选择了有set来做,练习一下stl
代码如下:
#include<iostream>
#include<algorithm>
#include<string>
#include<stack>
#include<set>
#include<queue>
#include<map>
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<time.h>
#include<math.h>
#define eps 1e-9
#define P system("pause")
using namespace std;
int main()
{
//freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);cc
int i,n;
set<int> a;
set<int>::iterator it;
while(scanf("%d",&n)!=EOF)
{
a.clear();
int k;
while(n--)
{
scanf("%d",&k);
it=a.lower_bound(k); //返回大于等于k的迭代器
if(it==a.end()) a.insert(k);
else{
a.erase(*it);a.insert(k);
}
}
printf("%d\n",a.size());
}
// P;
return 0;
}