HDU 1257 最少拦截系统【LIS】
题意:类似于套娃娃,问最少需要多少个拦截系统。
思路:
假设已经有m个导弹拦截序列
r1:x11>=x12>=x13>=...>=x1n
r1:x21>=x22>=x23>=...>=x2n
.
.
rm:xm1>=xm2>=xm3>=...>=xmn
则必定有有一个序列x1i<x2i<x3i<...<xmi,证明:
若rx中最小比他后边某个序列的所有元素都要大的话,这两个序列必定能合成一个序列。
如r1:8,5,4
r2:3,2,1
因此序列x1i<x2i<x3i<...<xmi的长度就是所求的长度。
另,原序列的最长严格上升序列的长度的就是该序列的长度。证明:
若存在最长严格上升子序列:xj1<xj2<xj3<...<xjk
很明显,则xj2与xj1不可能属于同一个r,后同。故得证。
故原问题就转换成求最长严格上升子序列的长度。
类似的题目还有:http://acm.hdu.edu.cn/showproblem.php?pid=1677
以上结论的证明是本人第一次完全靠自己写的证明,必定有所纰漏,甚至完全错误。写在此并不是为了让看官们背住结论就算了,更希望许多像我一样的菜鸟能够自己动手证明一些东西,这样你对于这个知识点的理解必定会上一层楼。希望大神们指正。
#include<stdio.h>
#include<string.h>
const int N=;
int a,d[N];
int main(){
int n,i,ans;
while(~scanf("%d",&n)){
d[]=-;ans=;
for(i=;i<=n;i++){
scanf("%d",&a);
if(a>d[ans]){
d[++ans]=a;
}else{
int l=,r=ans;
while(l<=r){
int mid=(l+r)>>;
if(d[mid]>a) r=mid-;
else l=mid+;
}
d[l]=a;
}
}
printf("%d\n",ans);
}
return ;
}
HDU 1257 最少拦截系统【LIS】的更多相关文章
- HDU 1257 最少拦截系统 最长递增子序列
HDU 1257 最少拦截系统 最长递增子序列 题意 这个题的意思是说给你\(n\)个数,让你找到他最长的并且递增的子序列\((LIS)\).这里和最长公共子序列一样\((LCS)\)一样,子序列只要 ...
- HDU 1257 最少拦截系统(贪心 or LIS)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1257 最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 1257最少拦截系统[动态规划]
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1257 最 ...
- hdu 1257 最少拦截系统【贪心 || DP——LIS】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1257 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- HDU 1257——最少拦截系统——————【LIS变型题】
最少拦截系统 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- HDU 1257 最少拦截系统(Dilworth定理+LIS)
最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- POJ - 2533 Longest Ordered Subsequence与HDU - 1257 最少拦截系统 DP+贪心(最长上升子序列及最少序列个数)(LIS)
Longest Ordered Subsequence A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let ...
- HDU 1257 最少拦截系统 (DP || 贪心)
最少拦截系统 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- hdu 1257 最少拦截系统(动态规划 / 贪心)
最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- hdu 1257最少拦截系统
最少拦截系统 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的 ...
随机推荐
- MesaSQLite数据库的简单使用方法
前言部分 本文非原创 文章摘自:http://m.blog.csdn.net/blog/wsxzk123/17282325 数据库工具:MesaSQLite 一.创建数据库 1.创建数据库 MesaS ...
- [译]Godot系列教程四 - 编写脚本
编写脚本(Scripting) 简介 关于无需编程即可创建视频游戏的那些工具的谈论有很多.不用学习编程知识对很多独立开发者来说就是一个梦想.这种需求 - 游戏开发者.甚至在很多公司内部,希望对游戏流程 ...
- Java IO之字节流
Java中的输入是指从数据源等读到Java程序中,这里的数据源可以是文件,内存或网络连接,输出则是指从Java程序中写到目的地. 输入输出流可以分为以下几种类型(暂时不考虑File类) 类名 中文名 ...
- mybatis中的#和$的区别(转)
#相当于对数据 加上 双引号,$相当于直接显示数据 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sq ...
- Spring声明事务管理
首先我们先了解事务,什么是事务? 简单来说就是要么全部成功,要么什么都不做. 为什么要使用事务? 比如说常用银行系统的例子,如果没有用事务,有人在存入钱的时候出了问题,那么银行系统数据库的数据没有改变 ...
- 《IBM BPM实战指南》读书笔记
理论 BPM不是一个IT术语,更不是因技术的发展而起源的,相反,BPM自始至终都是管理学的术语和概念.它关注的一直都是效率.成本.利润.质量等核心问题.BPM是一门学科和一种方法论,只是现代的企业管理 ...
- 使用 Sticky-Kit 实现基于 jQuery 的元素固定效果
元素固定效果在网页中应用得很多,比较常见的使用场景有改进导航,显示广告.Sticky-Kit 是一个非常方便的 jQuery 插件,简化了创建/管理粘元素,有复杂的使用功能.这些功能包括:处理多个固定 ...
- Promise和$.Deferred总结
语法对比: Promise .then(f).catch(f)是.then(f,f)的语法糖 .all([A,B,C])等最慢的 .race([A,B,C])最快的 $.Deferred .d ...
- 【翻译】jQuery是有害的
原文:http://lea.verou.me/2015/04/jquery-considered-harmful/**(第一次翻译,望大家多批评指正) jQuery是有害的 嗨,我总想写一个“X”是有 ...
- FusionCharts的使用方法(超详细)
今天统计价格变化规律的时候找到的一个很好的文档,很详细 一.简介 Ø FusionCharts 是InfoSoft Global 公司的一个产品,InfoSoft Global 公司是专业的Flash ...