hdu1257 最少拦截系统--DP
发布日期:2021-10-03 20:31:57
浏览次数:6
分类:技术文章
本文共 1071 字,大约阅读时间需要 3 分钟。
原题链接:
一:原题内容
Problem Description
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹. 怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.
Input
输入若干组数据.每组数据包括:导弹总个数(正整数),导弹依此飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)
Output
对应每组数据输出拦截所有导弹最少要配备多少套这种导弹拦截系统.
Sample Input
8 389 207 155 300 299 170 158 65
Sample Output
2
二:分析理解
求最长递减序列的个数
三:AC代码
#include#include #include using namespace std;int dp[1005];//dp[i]代表第i个最长递减序列中当前状态的所含元素最小值 int main(){ int n; int x; while (~scanf("%d", &n)) { dp[1] = 0; int ans = 0;//最长递减序列的个数,也就是本题的答案 for (int i = 1; i <= n; i++) { scanf("%d", &x); int j; for (j = 1; j <= ans; j++) { if (x < dp[j]) { dp[j] = x; break; } } if (j > ans) dp[++ans] = x; } printf("%d\n", ans); } return 0;}
解法二:
dp[ i ]表示以i结尾的最长递增子序列的长度。
#includeint a[1000],d[1000]; int main() { int i,n,j,max; while(scanf("%d",&n)!=EOF) { for(i=0;i a[j]&&d[i]
转载地址:https://blog.csdn.net/LaoJiu_/article/details/50964138 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月07日 06时04分02秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
第二技能
2019-04-27
算法的设计
2019-04-27
JAVA Freemarker(9)---常见语法大全
2019-04-27
Java MyBatis(1)--- Generator 详解
2019-04-27
Java MyBatis(2)--- generatorConfig.xml详解与运行
2019-04-27
VueJS(5)---初步练习(5题)
2019-04-27
mysql(3)-- 修改root密码命令小结
2019-04-27
JQuery(3)--冒泡效果
2019-04-27
异常(2)-- UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/项目包名
2019-04-27
Android软键盘(1)---输入法界面管理(打开/关闭/状态获取)
2019-04-27
Android动态设置view的高度宽度
2019-04-27
css3 属性 text-overflow 实现截取多余文字内容 以省略号来代替多余内容
2019-04-27
vue 事件总线EventBus的概念、使用以及注意点
2019-04-27
JavaScript 用七种方式教你判断一个变量是否为数组类型
2019-04-27
细讲前端设置cookie, 储存用户登录信息
2019-04-27
Web前端安全策略之CSRF的攻击与防御
2019-04-27
斯坦福CS236-深度生成模型2019-全套课程资料分享
2019-04-27
知识图谱(KG)存储、可视化、公开数据集、图计算、图编程工具分享
2019-04-27
伯克利-《神经技术导论2020(带字幕)》
2019-04-27