1044 拦截导弹

1999年NOIP全国联赛提高组

时间限制: 1 s
空间限制: 128000 KB
题目等级 : 黄金 Gold
 
 
 
 
题目描述 Description

某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。

输入描述 Input Description

输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数)

输出描述 Output Description

输出这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。

样例输入 Sample Input

389 207 155 300 299 170 158 65

样例输出 Sample Output

6

2

数据范围及提示 Data Size & Hint

导弹的高度<=30000,导弹个数<=20

分类标签 Tags 点此展开

第一问即经典的最长不下降子序列问题,可以用一般的DP算法,也可以用高效算法,但这个题的数据规模不需要。
  用a[x]表示原序列中第x个元素,b[x]表示长度为x的不下降子序列的长度,。当处理第a[x]时,可查找它可以连接到长度最大为多少的不下降子序列后(即与部分b[x]比较)。假设可以连到长度最大为maxx的不下降子序列后,b[x]:=maxx+1b数组被赋值的最大值就是第一问的答案。
  第二问用贪心法即可。每颗导弹来袭时,使用能拦截这颗导弹的防御系统中上一次拦截导弹高度最低的那一套来拦截。若不存在符合这一条件的系统,则使用一套新系统。

注意这个求的是最长不上升子序列

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const int MAXN=;
const int maxn=0x7fffffff;
int a[MAXN][];
int now=;
int xt[MAXN];
int now2=;// 系统的数量
int main()
{
while(cin>>a[now][])
{
int flag=;
for(int i=;i<=now2;i++)
{
if(xt[i]>=a[now][])
{
flag=;
xt[i]=a[now][];
break;
} }
if(flag==)
{
now2++;
xt[now2]=maxn;
xt[now2]=a[now][];
}
a[now][]=;
a[now][]=;
now++;
}
for(int i=now-;i>=;i--)
{
int l=;
int k=;
for(int j=i+;j<=now-;j++)
{
if(a[j][]<a[i][]&&a[j][]>l)
{
k=j;
l=a[j][];
}
}
if(l>)
{
a[i][]=l+;
a[i][]=k;
} }
int ans1=;
for(int i=;i<=now-;i++)
{
ans1=max(a[i][],ans1);
}
printf("%d\n",ans1);
printf("%d",now2);
return ;
}

最新文章

  1. UITextField的代理方法:textField:shouldChangeCharactersInRange:replacementString
  2. knockoutJS学习笔记08:表单域绑定
  3. ArcGIS空间分析工具
  4. C# 设置和获取一个字节的某一位的值的方法
  5. Model
  6. 控制反转(IOC)/依赖注入(DI)理解
  7. nefu 449 超级楼梯 &amp;&amp;nefu 911 跨楼梯
  8. 201521123052《Java程序设计》第9周学习总结
  9. 使用 mysqltuner 检测 mysql 稳定性
  10. Linux中断程序命令
  11. Spark2 Model selection and tuning 模型选择与调优
  12. 使用.NET向webService传double、int、DateTime 服务器得到的数据时null的问题(转http://blog.csdn.net/slimboy123/article/details/4366701)
  13. php序列化与反序列化时字符集不一致问题的解决办法
  14. linux进程管理(二)
  15. 关系型数据库(RDBMS)与 MongoDB 的对应关系
  16. 安卓android破解方法
  17. HTTP基本内容
  18. Redis(四):常用数据类型和命令
  19. Dojo Javascript 编程规范(转)
  20. C语言一些易混淆的概念

热门文章

  1. poj1149PIGS——网络最大流
  2. bzoj1042硬币购物——递推+容斥
  3. C# 性能分析工具
  4. Behave + Selenium(Python) 二
  5. linux cpu内存利用率获取
  6. POJ-3050
  7. MySQL Horizontal Scaling
  8. jquery、javascript实现(get、post两种方式)跨域解决方法
  9. 2014年第五届蓝桥杯国赛试题(JavaA组)
  10. 数据库路由中间件MyCat - 使用篇(2)