拦截导弹(二分匹配)
Description
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。
Input
Output
Sample Input
300 250 275 252 200 138 245
Sample Output
5(最多能拦截的导弹数)
2(要拦截所有导弹最少要配备的系统数)
.
.
.
.
.
分析
最多能拦截多少导弹可以用最长不上升子序列
最少系统数可以用最大匹配
构图时把导弹拆成两个,并把从任一导弹开始能拦截的导弹与其连线,自己不和自己连线
答案是n-最大匹配数
.
.
.
.
.
程序:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;int tj=0,a[10000],b[10000];int v[40000],link[4000],head[4000];struct node
{int to,next;
}f[4000];int find(int x)
{for (int i=head[x];i;i=f[i].next){int j=f[i].to;if (!v[j]){int q=link[j];link[j]=x;v[j]=1;if (!q||find(q)) return 1;link[j]=q;}}return 0;
}int main()
{int n=1;while (scanf("%d",&a[n])!=EOF){for (int i=1;i<n;i++)if (a[i]>=a[n]){f[++tj].next=head[i];f[tj].to=n;head[i]=tj;}n++;}n--;for (int i=1;i<=n;i++){for (int j=1;j<=i-1;j++)if (a[j]>=a[i]&&b[j]>b[i]) b[i]=b[j];b[i]++;if (b[i]>b[n+1]) b[n+1]=b[i];}int ans=n;for (int i=1;i<=n;i++){memset(v,0,sizeof(v));if (find(i)) ans--;} printf("%d\n%d",b[n+1],ans);return 0;
}
转载于:https://www.cnblogs.com/YYC-0304/p/10292797.html
拦截导弹(二分匹配)相关推荐
- POJ - 2446 Chessboard 二分匹配+建图
题目链接 题意很简单,是二分匹配的一种常见的题型,问题就在于怎样转换到二分图上来. 首先对对n*m-k正常点进行编号,然后遍历查找每一个正常点的上下左右是否能连接(就是判断另个点是否也是正常的),如果 ...
- poj3041--Asteroids(二分匹配)[将矩阵行列转化为边]
题目大意,给出n*n的矩阵,其中有m个流星,一下给出每颗流星的坐标,每一次攻击可以消除一行或一列的流星,问最少攻击几次? 竟然是二分匹配!竟然是二分匹配!竟然是二分匹配!竟然是二分匹配! 建图,以行为 ...
- 香港大学提出OneNet:一阶段端到端目标检测网络,无需NMS!无需二分匹配!
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 本文作者:孙培泽 | 编辑:Amusi https://zhuanlan.zhihu.com ...
- 杭电2063--过山车(二分匹配)
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- pku 1486 求出二分匹配图中的必须边
开始楞是没看懂意思,E文让我很纠结... 要判断一条边是否为二分图中必须边,方法如下: 1.先求出原图的任意最大匹配 2.对二分图某一边的所有点,删去其当前的匹配边.删的过程不是简单的将原图设为不连通 ...
- POJ1325二分匹配或者DINIC(最小路径覆盖)
题意: 有k个任务,两个机器,第一个机器有n个模式,第二个机器有m个模式,每个任务要么在第一个机器的一个模式下工作,要么在第二个机器的一个模式下工作,机器每切换一个模式需要重启一次,两个 ...
- POJ2239简单二分匹配
题意: 一周有7天,每天可以上12节课,现在给你每科课的上课时间,问你一周最多可以上几科课,一科课只要上一节就行了. 思路: 简单题目,直接二分就行了,好久没写二分匹配了,练习 ...
- hdu2413 二分+二分匹配
题意: 地球和外星球大战,地球有n个飞船,外星球有m个飞船,每个飞船有自己的其实战舰和战舰增长率,星球于星球之间有距离,问你最少多少年地球可以打败外星球,每个星球最多只能和一个星球对战.. ...
- LibreOJ #2006. 「SCOI2015」小凸玩矩阵 二分答案+二分匹配
#2006. 「SCOI2015」小凸玩矩阵 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 小 ...
最新文章
- 内嵌iframe撑高父容器,底部有4px留白问题解决办法
- 算法导论--python--插入排序
- 52 介绍几个重要的类
- JAVA WEB知识总结之一--responserequest
- 分布式计算Hadoop系列之如何修改Eclipse插件
- Javascript的怪癖
- When.js 1.8.0 发布,Promises/A 的实现
- 分享JavaScript开发实战经验
- 银行计算机设备日常检查表,[计算机]201154安全检查表.doc
- Mac下安装jdk8
- POE交换机产品如何设计防雷保护?
- 人工智能语言python实验报告_【报名】人工智能语言Python启蒙课程(五六年级)...
- ICCV2021 新增数据集汇总 | 含时序动作定位、时空行为检测、弱光目标检测等!...
- 史蒂夫 乔布斯(Steve Jobs)在斯坦福大学2005年毕业典礼上的演讲
- Maven实战读书笔记(3)
- 《TCP/IP Sockets编程(C语言实现) (第2版)》 代码下载(链接以及文件打包)
- 线性代数知识荟萃(2)——矩阵运算理论
- MySQL正则表达式的问题
- 【启动程序是无法加载 libnsl.so.1】
- 鸿蒙系统1004无标题,win10 10041更新提示错误怎么处理