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

拦截导弹(二分匹配)相关推荐

  1. POJ - 2446 Chessboard 二分匹配+建图

    题目链接 题意很简单,是二分匹配的一种常见的题型,问题就在于怎样转换到二分图上来. 首先对对n*m-k正常点进行编号,然后遍历查找每一个正常点的上下左右是否能连接(就是判断另个点是否也是正常的),如果 ...

  2. poj3041--Asteroids(二分匹配)[将矩阵行列转化为边]

    题目大意,给出n*n的矩阵,其中有m个流星,一下给出每颗流星的坐标,每一次攻击可以消除一行或一列的流星,问最少攻击几次? 竟然是二分匹配!竟然是二分匹配!竟然是二分匹配!竟然是二分匹配! 建图,以行为 ...

  3. 香港大学提出OneNet:一阶段端到端目标检测网络,无需NMS!无需二分匹配!

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 本文作者:孙培泽 |  编辑:Amusi https://zhuanlan.zhihu.com ...

  4. 杭电2063--过山车(二分匹配)

    过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  5. pku 1486 求出二分匹配图中的必须边

    开始楞是没看懂意思,E文让我很纠结... 要判断一条边是否为二分图中必须边,方法如下: 1.先求出原图的任意最大匹配 2.对二分图某一边的所有点,删去其当前的匹配边.删的过程不是简单的将原图设为不连通 ...

  6. POJ1325二分匹配或者DINIC(最小路径覆盖)

    题意:        有k个任务,两个机器,第一个机器有n个模式,第二个机器有m个模式,每个任务要么在第一个机器的一个模式下工作,要么在第二个机器的一个模式下工作,机器每切换一个模式需要重启一次,两个 ...

  7. POJ2239简单二分匹配

    题意:       一周有7天,每天可以上12节课,现在给你每科课的上课时间,问你一周最多可以上几科课,一科课只要上一节就行了. 思路:       简单题目,直接二分就行了,好久没写二分匹配了,练习 ...

  8. hdu2413 二分+二分匹配

    题意:       地球和外星球大战,地球有n个飞船,外星球有m个飞船,每个飞船有自己的其实战舰和战舰增长率,星球于星球之间有距离,问你最少多少年地球可以打败外星球,每个星球最多只能和一个星球对战.. ...

  9. LibreOJ #2006. 「SCOI2015」小凸玩矩阵 二分答案+二分匹配

    #2006. 「SCOI2015」小凸玩矩阵 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 小 ...

最新文章

  1. 内嵌iframe撑高父容器,底部有4px留白问题解决办法
  2. 算法导论--python--插入排序
  3. 52 介绍几个重要的类
  4. JAVA WEB知识总结之一--responserequest
  5. 分布式计算Hadoop系列之如何修改Eclipse插件
  6. Javascript的怪癖
  7. When.js 1.8.0 发布,Promises/A 的实现
  8. 分享JavaScript开发实战经验
  9. 银行计算机设备日常检查表,[计算机]201154安全检查表.doc
  10. Mac下安装jdk8
  11. POE交换机产品如何设计防雷保护?
  12. 人工智能语言python实验报告_【报名】人工智能语言Python启蒙课程(五六年级)...
  13. ICCV2021 新增数据集汇总 | 含时序动作定位、时空行为检测、弱光目标检测等!...
  14. 史蒂夫 乔布斯(Steve Jobs)在斯坦福大学2005年毕业典礼上的演讲
  15. Maven实战读书笔记(3)
  16. 《TCP/IP Sockets编程(C语言实现) (第2版)》 代码下载(链接以及文件打包)
  17. 线性代数知识荟萃(2)——矩阵运算理论
  18. MySQL正则表达式的问题
  19. 【启动程序是无法加载 libnsl.so.1】
  20. 鸿蒙系统1004无标题,win10 10041更新提示错误怎么处理

热门文章

  1. VTK修炼之道22:图像基本操作_彩色图像成分提取
  2. SVM熟练到精通2:SVM目标函数的dual优化推导
  3. Linux常用命令全名
  4. 加密(Asp.Net配置文件的)配置节
  5. js按键处理demo
  6. DELPHI参数几个概念上的区别 收藏
  7. 原子操作和互斥量的区别
  8. IDEA启动项目:找不到或无法加载主类
  9. 硬中断、软中断和信号
  10. Android 屏幕录制GIF脚本