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

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

最少拦截系统

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 35053    Accepted Submission(s): 13880

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

 

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

 

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

 

Sample Input
8 389 207 155 300 299 170 158 65
 

 

Sample Output
2
 

题目链接:

不明觉厉的新定理,定理内容参考这篇博客:,这个定理大部分情况下可以用贪心搞搞代替

但是有了这个定理解法会更高大上一点= =|||,求个最长严格上升子序列长度即可

链的最少划分数=反链的最长长度

代码:

#include
#include
using namespace std;#define INF 0x3f3f3f3f#define CLR(x,y) memset(x,y,sizeof(x))#define LC(x) (x<<1)#define RC(x) ((x<<1)+1)#define MID(x,y) ((x+y)>>1)typedef pair
pii;typedef long long LL;const double PI=acos(-1.0);const int N=100010;int arr[N],d[N];void init(){ CLR(arr,0); CLR(d,0);}int main(void){ int n,i,j; while (~scanf("%d",&n)) { for (i=1; i<=n; ++i) scanf("%d",&arr[i]); int len=1; d[len]=arr[len]; for (i=2; i<=n; ++i) { if(d[len]

转载于:https://www.cnblogs.com/Blackops/p/5853923.html

你可能感兴趣的文章
推荐几个.NET开源图表组件 [转]
查看>>
脚本两则--用于快速部署HADOOP,SPARK这些(特别是VM虚拟机模板部署出来的)。。...
查看>>
用JQUERY为INPUT的TXT类型赋值及取值操作
查看>>
(视频) 《快速创建网站》 3.2 WordPress多站点及Azure在线代码编辑器 - 扔掉你的ftp工具吧,修改代码全部云端搞定...
查看>>
(转) 一步一步学习ASP.NET 5 (四)- ASP.NET MVC 6四大特性
查看>>
Python学习笔记——基础篇【第六周】——hashlib模块
查看>>
python的collection系列-默认字典(defaultdict)
查看>>
Noip 2014酱油记+简要题解
查看>>
loadrunner学习记录一
查看>>
转为win64后, MS的lib问题
查看>>
jQuery操作cookie
查看>>
编码解码错误
查看>>
HDU-1008
查看>>
利用curl验证ssl网站(webservice)
查看>>
RHEL6 下Cfengine V3 安装测试1
查看>>
【perl】simpleHTTP
查看>>
斐波那契数列通项公式
查看>>
[原]2011年度生活三层总结
查看>>
Oracle存储过程(转)
查看>>
centos7 源码安装goaccess
查看>>