题目: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定理)相关推荐

  1. Vijos P1303 导弹拦截【最长上升子序列+DP】

    背景 实中编程者联盟为了培养技术精湛的后备人才,必须从基础题开始训练. 描述 某国为了防御敌国的导弹袭击,研发出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度, ...

  2. luogu P1020 导弹拦截

    P1020 导弹拦截 1.Dilworth定理:对于一个偏序集,最少链划分等于最长反链长度. 其实就是说,对于一个序列, 最大上升子序列长度 = 不上升子序列个数 最大不上升子序列长度 = 上升子序列 ...

  3. Dilworth定理的简单应用(导弹拦截题解)

    写题时遇到一个计算导弹拦截系统的题解使用了Dilworth定理,浅写下个人理解. 一.百科解释 狄尔沃斯定理(Dilworth's theorem)亦称偏序集分解定理,是关于偏序集的极大极小的定理,该 ...

  4. 偏序集,Dilworth定理,以及经典的导弹拦截问题

    偏序集: 设R为非空集合A上的关系,如果R是自反的.反对称的和可传递的,则称R为A上的偏序关系,简称偏序,通常记作≦.一个集合A与A上的偏序关系R一起叫作偏序集,记作<A,R>或<A ...

  5. P1020 [NOIP1999 普及组] 导弹拦截 Dilworth定理 + dp

    传送门 文章目录 题意: 思路: 题意: 思路: 对于第一问直接输出最长不严格下降子序列即可,第二问是Dilworth定理,变形比较多,之前也写过类似的,这里贴个证明. //#pragma GCC o ...

  6. 导弹拦截(DP LIS)

    题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...

  7. LIS问题(最长上升子序列)与导弹拦截

    (前言)最长上升子序列LIS(longestincreasingsubsequence)LIS(longest\, increasing\, subsequence)LIS(longestincrea ...

  8. P1020 导弹拦截(LIS)

    题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...

  9. LIS算法:经典DP问题( 导弹拦截问题 )

    题目简单描述:为了拦截敌国的袭击,科学家研发出一套导弹系统,导弹系统有个缺陷:第一发炮弹可以到达任意高度,然而之后的每一发炮弹都不能高于前一发的高度. 现给出数个导弹的高度( <=50000的正 ...

最新文章

  1. UDP收/发广播包原理及步骤
  2. excel根据一列内容查找排序另一列_利用泰坦尼克生存数据讲述Excel数据分析的基本操作...
  3. oracle为空替换为0_详解Oracle如何用Translate来统计字符出现的次数
  4. JAVA WEB篇3——JSP
  5. 数据库中的数据类型和c#的数据类型的映射表(转)
  6. jenkins html编辑,Jenkins HTML Publisher插件:Jenkins 1.643没有外部链接
  7. FPGA学习笔记---3种乘法器的比较
  8. full join 和full outer join_带你了解数据库中JOIN的用法
  9. WIN10安装和使用MySql5.6中遇到的一些问题与解决
  10. 迅捷PDF转换器特点和使用步骤
  11. 谷歌浏览器 官网下载离线安装包
  12. 【机器学习】一文理解BP神经网络 附代码
  13. foobox 2.11(foobar2000 CUI配置)
  14. Boost电路的参数设计
  15. JAVA之翻转棋游戏
  16. 女人一生中重要的三件事。
  17. c++实现微妙级时间统计
  18. 【技术公开课】Redis从入门到实践
  19. 【layui】图片查看器
  20. 野路子记录玩耍树莓派心路历程

热门文章

  1. 互联网金融与大数据风控相结合的九大维度
  2. FPB 2.0:免费的计算机编程类中文书籍 2.0
  3. QT:Qt 网络编程基础
  4. 2018年网易实习生笔试题集合之数对
  5. 重装系统(WIN10)
  6. 《图解tcp/ip》读书笔记(一)
  7. DM8主备集群中主备库 的拆分与合并
  8. 成都传智播客就业班简介
  9. 剑网三账号分离能分到其他服务器,剑网三缘起服务器信息首曝,4直升1手动,这是不给玩家选择吗?...
  10. Git下载、安装、使用