题目: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. 银河1号是超级计算机吗,强国挑战答题答案:银河1号是我国第一台超级计算机,银河1号于____年研制完成。...
  2. c语言双链表是什么意思,双链表的表示和实现(C语言)
  3. c语言定义可变长度的数组,有没有办法在c中创建一个可变长度数组全局?
  4. linux fedora安装simplescreenrecorder
  5. 北京内推 | ​阿里达摩院智能计算实验室认知智能组招收多模态算法实习生
  6. python 时间序列预测 币价_python时间序列预测股票走势
  7. boost::breadth_first_search用法的测试程序
  8. Oracle BIEE (Business Intelligence) 11g 11.1.1.6.0 学习(2)RPD资料档案库创建
  9. 我对应聘者的面试原则
  10. Could not autowire. No beans of 'xxxx' type found的错误提示
  11. Flutter 底部向上动画弹出的菜单选项
  12. Paxos Made Simple
  13. 【华为云技术分享】云图说 | 云硬盘还可以共享?!不了解你就out了
  14. 接口对前后端和测试的意义
  15. 销售99绝招 成功没商量
  16. 学习Spring必学的Java基础知识(2)----动态代理
  17. IE浏览器无法更改缓存,
  18. Django项目中使用第三方登录——支付宝登录
  19. 怎样把ppt转换成html,如何将PPT文档转换成Flash/HTML的方法
  20. VR/AR的需求和前景

热门文章

  1. 钉钉中,打开app内的h5应用
  2. matlab 删除图片中大于一定面积的像素
  3. 小鹏汽车与太平洋产险签署战略合作
  4. setw(),setfill() 和左右对齐 控制输出流的格式
  5. python pywinauto
  6. 什么是薪酬管理系统,薪酬管理有哪些功能?
  7. webx3学习之旅——webx项目的创建(maven命令创建)
  8. 亚马逊MWS开发--订单相关
  9. Windows下Git下载安装详细图文教程(亲测有效)
  10. A - 检查宿舍卫生