题目描述

某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。

输入输出格式

输入格式

输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数)

输出格式

计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。

输入输出样例

输入样例#1:

300 250 275 252 200 138 245

输出样例#1:

5
2

题目解析

对于第一问,跑一遍dp就行了
第二问是问你至少配备几套系统可以拦截所有导弹,也就是用足够多的路径去覆盖这张图,那就转换成了最小路径覆盖问题

代码

#include<iostream>
#include<vector>
#include<cstring>
#include<cstdio>
using namespace std;
int a[30005],ai,link[30005],ans,f[30005],ans1;
vector<int> v[30005];
bool flag[30005];
bool find(int x)
{for(int i=0;i<v[x].size();i++)if(!flag[v[x][i]]){int j=v[x][i];flag[j]=1;int q=link[j];link[j]=x;if(!q||find(q)) return true;link[j]=q;}return false;
}//最大匹配
int main()
{while(scanf("%d",&a[++ai])!=EOF);//输入ai--;f[0]=1e8;for(int i=1;i<=ai;i++)if(f[ans1]>=a[i])f[++ans1]=a[i];else{int l=1,r=ans1;while(l<=r){int mid=(l+r)/2;if(f[mid]>=a[i]) l=mid+1;else r=mid-1;}f[l]=a[i];}//DPcout<<ans1<<endl;for(int i=1;i<=ai;i++)for(int j=i+1;j<=ai;j++)if(a[i]>=a[j])v[i].push_back(j);//连边for(int i=1;i<=ai;i++){memset(flag,0,sizeof(flag));ans+=find(i);}cout<<ai-ans;//最小路径覆盖数=顶点数-最大匹配数
}

[最小路径覆盖]拦截导弹相关推荐

  1. 最小路径覆盖与最小链覆盖 Dilworth定理:最小链覆盖等于最长反链(详细证明与经典例题)

    一.最小路径覆盖 定义 最小路径覆盖就是指在有向无环图中,用最少的.不相交的简单路径覆盖图中的所有点. 解法 ①将原图中的每个点拆点,(将点u拆成u与u+n): ②将原图中的每条边 <u,v&g ...

  2. 【网络流24题】最小路径覆盖问题

    [题目]1738: 最小路径覆盖问题 [题解]网络流 关于输出路径,因为即使有反向弧经过左侧点也一定会改变左侧点的去向,若没连向右侧就会被更新到0,所以不用在意. mark记录有入度的右侧点,然后从没 ...

  3. 最大匹配、最小顶点覆盖、最大独立集、最小路径覆盖(转)

    在讲述这两个算法之前,首先有几个概念需要明白: 二分图:  二分图又称二部图,是图论中的一种特殊模型.设G=(V,E)是一个无向图,如果顶点V可以分割为两个互不相交的子集(A,B),并且图中的每条边( ...

  4. 有向图最小路径覆盖方法浅析、证明 //hdu 3861

    路径覆盖就是在图中找一些路径,使之覆盖了图中的所有顶点,且任何一个顶点有且只有一条路径与之关联. 对于一个有向无环图怎么求最小路径覆盖? 先构造二分图: 对于原图,先拆点,吧每个点i拆成ii,iii. ...

  5. HDU4160(最小路径覆盖问题)

    题意:当满足条件wi<wj,hi<hl和li<lj时,求解通过优化嵌套给定的娃娃可以获得的最外层洋娃娃的最小数量. 思路:如果嵌套的娃娃越多,则剩下的娃娃就越少,意味着单独出来的娃娃 ...

  6. 最大流 ---- 最小路径覆盖 ---- P2765魔术球问题(网络流24题)

    题目链接 解题思路: 这题题目看起来根本不像网络流但是确实用网络流做的 这个题目有两个限制 每个柱子上面的球相邻两个的和必须是平方数 球的编号必须是连续的 首先我们只考虑第一个条件的话,我们怎么转化成 ...

  7. 二分图专题系列各大知识点总结(匈牙利,染色法,最大独立集,最小点覆盖,最小路径覆盖)

    本文概论 二分图的判断方法:图中不存在奇数环----->染色法判断二分图不存在矛盾 二分图: 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i, ...

  8. 流网络的最小割问题c语言,「网络流24题」最小路径覆盖问题

    Description 问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖.P 中路径可以从V 的任 ...

  9. 【网络流24题】D、魔术球问题(有向无环图的最小路径覆盖、思维)

    D.魔术球问题(有向无环图的最小路径覆盖.思维)[省选/NOI- ] P2765 魔术球问题 [问题分析] 枚举答案转化为判定性问题,然后最小路径覆盖,可以转化成二分图最大匹配,从而用最大流解决. [ ...

最新文章

  1. 组件通信 Provideinject
  2. 云上的Growth hacking之路,打造产品的增长引擎
  3. Word+Excel 问题及解决
  4. SQL Server 2008 R2——ROW_NUMBER() 去掉不同行中相同列的重复内容
  5. .net core 文件流保存图片_如何将图片打包成PDF文件进行保存?
  6. python自定义模块的使用_python自定义模块使用说明
  7. 苹果因不带充电器被罚款200万美元;杨笠代言英特尔被抵制,品牌方连夜下架;Linux考虑加入对Rust的支持 | 极客头条...
  8. GraphQL | 一种配得上凡尔赛的API框架
  9. 时间序列分析的模型应用 – 股价预测
  10. j2CaChe在项目中的应用(二级缓存)
  11. 星际迷航的William Shatner发推文支持Vitalik Buterin
  12. 读书的故事(转百度知道)
  13. Win10 Synaptics触摸板无法实现双指单击模拟鼠标右键点击的解决办法
  14. linux电脑外放没声音,告诉你Ubuntu扬声器无声的解决方法及命令
  15. 物联网卡新型智慧城市解决方案
  16. python 根据地址求经纬度 谷歌_js获取ip地址利用谷歌地图获得经纬度
  17. bootstrapt学习指南_Bootstrap学习文档(一)
  18. 记账理财,就选我爱管账
  19. Jdbc小项目:员工工管理系统
  20. asp毕业设计——基于Delphi+udp+UDP的基于局域网的信息收发系统设计与实现(毕业论文+程序源码)——信息收发系统

热门文章

  1. [应用模板]HTML5电子相册
  2. 灰色GM(1,1)模型及其在电力负荷预测中的应用附Matlab代码
  3. 系统函数(内置函数)
  4. Golang:实现断点续传(复制文件)
  5. win10taskkill无法终止进程_进程结束不掉?超级技巧干掉顽固进程!
  6. Everyme:类似QQ圈子的社交应用
  7. 安卓和php接口数据传输加密,安卓与PHP间的RSA(openssl)交互加密的坑
  8. 从GitHub火到了博客,共计1658页的《Java岗面试核心MCA版》,拿走不谢
  9. HEVC新特点一览(3)
  10. Oracle数据库基本常用命令