博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1257 最少拦截系统
阅读量:5109 次
发布时间:2019-06-13

本文共 1236 字,大约阅读时间需要 4 分钟。

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1257

Problem Description
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.
怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.
 

 

Input
输入若干组数据.每组数据包括:导弹总个数(正整数),导弹依此飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)
 

 

Output
对应每组数据输出拦截所有导弹最少要配备多少套这种导弹拦截系统.
 

 

Sample Input
8 389 207 155 300 299 170 158 65
 

 

Sample Output
2
 
 
Hint:
题意:
中文,不解释。
题解:
经典dp例题。
代码:
#include 
#include
#include
#include
using namespace std;const int maxn = 1000+10;#define inf 0x3f3f3f3f#define met(a,b) memset(a,b,sizeof(a))int dp[maxn];int main(){ int n; while(scanf("%d",&n)!=EOF) { met(dp,0); int i,j,l=0; dp[1]=inf; for(i=1;i<=n;i++) { int num; scanf("%d",&num); for(j=1;j<=l;j++) { if(dp[j]>num) { dp[j]=num; break; } } if(j>l) dp[++l]=num; } printf("%d\n",l); }}

 

 

转载于:https://www.cnblogs.com/TAT1122/p/5860232.html

你可能感兴趣的文章
cassandra vs mongo (1)存储引擎
查看>>
Visual Studio基于CMake配置opencv1.0.0、opencv2.2
查看>>
遍历Map对象
查看>>
MySQL索引背后的数据结构及算法原理
查看>>
#Leetcode# 209. Minimum Size Subarray Sum
查看>>
SDN第四次作业
查看>>
DM8168 DVRRDK软件框架研究
查看>>
django迁移数据库错误
查看>>
yii 跳转页面
查看>>
洛谷 1449——后缀表达式(线性数据结构)
查看>>
Data truncation: Out of range value for column 'Quality' at row 1
查看>>
Dirichlet分布深入理解
查看>>
(转)Android之发送短信的两种方式
查看>>
字符串处理
查看>>
HtmlUnitDriver 网页内容动态抓取
查看>>
ad logon hour
查看>>
获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName...
查看>>
证件照(1寸2寸)拍摄处理知识汇总
查看>>
罗马数字与阿拉伯数字转换
查看>>
Eclipse 反编译之 JadClipse
查看>>