hdoj--1257--最少拦截系统(动态规划)
2015-10-12 22:09
218 查看
最少拦截系统
Submit
Status
Description
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.
怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.
Input
输入若干组数据.每组数据包括:导弹总个数(正整数),导弹依此飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)
Output
对应每组数据输出拦截所有导弹最少要配备多少套这种导弹拦截系统.
Sample Input
8 389 207 155 300 299 170 158 65
Sample Output
2
求最长非递减序列,在这个序列中,每两个导弹是无法共用同一个系统的
Time Limit: 1000MS | Memory Limit: 32768KB | 64bit IO Format: %I64d & %I64u |
Status
Description
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.
怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.
Input
输入若干组数据.每组数据包括:导弹总个数(正整数),导弹依此飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)
Output
对应每组数据输出拦截所有导弹最少要配备多少套这种导弹拦截系统.
Sample Input
8 389 207 155 300 299 170 158 65
Sample Output
2
求最长非递减序列,在这个序列中,每两个导弹是无法共用同一个系统的
#include<stdio.h> int dp[1100],a[1100],n; int main() { while(scanf("%d",&n)!=EOF) { int ans=0,i,j; for(i=0;i<n;i++) { scanf("%d",&a[i]); dp[i]=1; for(j=i-1;j>=0;j--) if(a[i]>a[j]&&dp[j]+1>dp[i]) dp[i]=dp[j]+1; ans=ans>dp[i]?ans:dp[i]; } printf("%d\n",ans); } }
相关文章推荐
- 数据结构(十)完全二叉树节点个数计算
- JavaScript的对象——灵活与危险
- hdoj--1257--最少拦截系统(动态规划)
- Android toolbar 随笔
- c++类中的各种成员-嵌套类、友元和this指针
- 【Python】爬虫入门--抓取网站图片
- 简单学C——第五天
- SQL Server T-SQL高级查询
- hdoj 2033 ( 人见人爱A+B ) C++
- Mysql、MariaDB 新型主从集群配置GTID
- 给定两个字符串s1,s2,请编写代码检查s2是否为s1旋转而成
- JAVA学习
- ios第一天
- 杭电acm--1021
- 对网络协议的理解
- html中a标签中的onclick和href的使用
- SNMP从入门到开发:基础篇
- H5之js拼接select与input的级联
- 剑指offer—机器人的运动范围
- 《深入理解计算机系统》读书笔记8--- 并发编程2