Vijos 1303 导弹拦截(LIS+Dilworth定理)
题目:https://www.vijos.org/p/1303
思路:
第一问最长不上升子序列,第二问运用定理:
一个序列中,最长不上升子序列的最小覆盖度等于序列中最长上升自序列的长度。
(由于求的额外的,所以再减一)
注意:LIS用的时候注意n=1的情况,别瞎输出。还有dp数组初始化全了,别漏下。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int a[25],dp[25];int main() {int n=0,cnt1=0,cnt2=0;char c;while(scanf("%d%c",&a[n++],&c)==2)if(c=='\n')break;for(int i=1;i<n;i++){dp[i]=1;dp[0]=1; //初始化插在循环里固然好,但别漏下。for(int j=0;j<i;j++)if(a[i]<=a[j])dp[i]=max(dp[j]+1,dp[i]);cnt1=max(dp[i],cnt1);}memset(dp,0,sizeof(dp));//不上升子序列覆盖度等于最长上升子序列for(int i=1;i<n;i++){dp[i]=1;dp[0]=1;for(int j=0;j<i;j++)if(a[i]>a[j])dp[i]=max(dp[j]+1,dp[i]);cnt2=max(dp[i],cnt2);}cnt2--;if(n==1){cout<<1<<","<<0<<endl;return 0;}cout<<cnt1<<","<<cnt2<<endl;return 0;
}
Vijos 1303 导弹拦截(LIS+Dilworth定理)相关推荐
- Vijos P1303 导弹拦截【最长上升子序列+DP】
背景 实中编程者联盟为了培养技术精湛的后备人才,必须从基础题开始训练. 描述 某国为了防御敌国的导弹袭击,研发出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度, ...
- luogu P1020 导弹拦截
P1020 导弹拦截 1.Dilworth定理:对于一个偏序集,最少链划分等于最长反链长度. 其实就是说,对于一个序列, 最大上升子序列长度 = 不上升子序列个数 最大不上升子序列长度 = 上升子序列 ...
- Dilworth定理的简单应用(导弹拦截题解)
写题时遇到一个计算导弹拦截系统的题解使用了Dilworth定理,浅写下个人理解. 一.百科解释 狄尔沃斯定理(Dilworth's theorem)亦称偏序集分解定理,是关于偏序集的极大极小的定理,该 ...
- 偏序集,Dilworth定理,以及经典的导弹拦截问题
偏序集: 设R为非空集合A上的关系,如果R是自反的.反对称的和可传递的,则称R为A上的偏序关系,简称偏序,通常记作≦.一个集合A与A上的偏序关系R一起叫作偏序集,记作<A,R>或<A ...
- P1020 [NOIP1999 普及组] 导弹拦截 Dilworth定理 + dp
传送门 文章目录 题意: 思路: 题意: 思路: 对于第一问直接输出最长不严格下降子序列即可,第二问是Dilworth定理,变形比较多,之前也写过类似的,这里贴个证明. //#pragma GCC o ...
- 导弹拦截(DP LIS)
题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...
- LIS问题(最长上升子序列)与导弹拦截
(前言)最长上升子序列LIS(longestincreasingsubsequence)LIS(longest\, increasing\, subsequence)LIS(longestincrea ...
- P1020 导弹拦截(LIS)
题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...
- LIS算法:经典DP问题( 导弹拦截问题 )
题目简单描述:为了拦截敌国的袭击,科学家研发出一套导弹系统,导弹系统有个缺陷:第一发炮弹可以到达任意高度,然而之后的每一发炮弹都不能高于前一发的高度. 现给出数个导弹的高度( <=50000的正 ...
最新文章
- UDP收/发广播包原理及步骤
- excel根据一列内容查找排序另一列_利用泰坦尼克生存数据讲述Excel数据分析的基本操作...
- oracle为空替换为0_详解Oracle如何用Translate来统计字符出现的次数
- JAVA WEB篇3——JSP
- 数据库中的数据类型和c#的数据类型的映射表(转)
- jenkins html编辑,Jenkins HTML Publisher插件:Jenkins 1.643没有外部链接
- FPGA学习笔记---3种乘法器的比较
- full join 和full outer join_带你了解数据库中JOIN的用法
- WIN10安装和使用MySql5.6中遇到的一些问题与解决
- 迅捷PDF转换器特点和使用步骤
- 谷歌浏览器 官网下载离线安装包
- 【机器学习】一文理解BP神经网络 附代码
- foobox 2.11(foobar2000 CUI配置)
- Boost电路的参数设计
- JAVA之翻转棋游戏
- 女人一生中重要的三件事。
- c++实现微妙级时间统计
- 【技术公开课】Redis从入门到实践
- 【layui】图片查看器
- 野路子记录玩耍树莓派心路历程