正题


解题思路

一个东西可以拦截导弹,每次只能打比上一次x,y,zx,y,zx,y,z都大的导弹。求一个最多可以拦截掉多少个导弹和至少要多少个才能拦截完。拦截导弹没有顺序要求。


解题思路

由于没有顺序要求所以我们可以直接定义一个比较,然后第一问做法和导弹拦截差不多,然后第二问最小路径覆盖。


codecodecode

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
struct line{int y,next;
}a[1101*1101];
struct node{int x,y,z;
}d[1101];
int link[1101],n,m,ls[1101],s,t,tot,num[1101],maxs,f[1101];
bool operator<(node a,node b)
{return a.x<b.x&&a.y<b.y&&a.z<b.z;};
bool cover[1101];
char c;
void addl(int x,int to)
{a[++tot].next=ls[x];a[tot].y=to;ls[x]=tot;return;
}
bool find(int x)
{int p=0;for (int q=ls[x];q;q=a[q].next){if (!cover[a[q].y]){p=link[a[q].y];link[a[q].y]=x;cover[a[q].y]=true;if (!p || find(p)) return true;link[a[q].y]=p;}}return false;
}
bool cmp(node a,node b)
{return a.x<b.x;}
int main()
{freopen("missile.in","r",stdin);freopen("missile.out","w",stdout);scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d%d%d",&d[i].x,&d[i].y,&d[i].z);sort(d+1,d+1+n,cmp);for (int i=1;i<=n;i++)//第一问{f[i]=1;for (int j=1;j<i;j++)if (d[j]<d[i]) f[i]=max(f[i],f[j]+1);maxs=max(f[i],maxs);}printf("%d\n",maxs);for (int i=1;i<=n;i++)//连边for (int j=1;j<i;j++)if(d[j]<d[i]) addl(i,j);for (int i=1;i<=n;i++){memset(cover,false,sizeof(cover));if (find(i)) s++;}printf("%d",n-s);
}

jzoj5354-导弹拦截【dp,最大匹配,最少路径覆盖】相关推荐

  1. ssl1341-最小路径覆盖【最大匹配,最小路径覆盖,图论】

    正题 大意 给一个无向图,求最少需要多少条路径可以连接所有点. 解题思路 一个公式就好了 最小路径覆盖数=最大匹配数 代码 #include<cstdio> #include<cst ...

  2. [最小路径覆盖]拦截导弹

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

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

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

  4. HDU - 1151 Air Raid(最小路径覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:给出一个有向图,现在需要在不同的地方空降伞兵,保证所有伞兵沿着道路可以走完所有城市,求出最少伞兵的数量 题目分析:我们的目的是要用最少的路径覆盖所有顶点,换句话说就是二分 ...

  5. POJ - 3020 Antenna Placement(最小路径覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:给出一个n*m的地图,图中'o'代表空地,'*'代表城市,现在需要给城市装无线网,每个无线网最多可以覆盖相邻的两个城市,问覆盖所有的城市最少需要装多少个无线网 题目分析: ...

  6. Light OJ 1406 Assassin`s Creed 减少国家DP+支撑点甚至通缩+最小路径覆盖

    标题来源:Light OJ 1406 Assassin`s Creed 意甲冠军:向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路:最少的的人能够走全然图 明显是最小路径覆盖问 ...

  7. 导弹拦截(DP LIS)

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

  8. 二分图大讲堂——彻底搞定最大匹配数(最小覆盖数)、最大独立数、最小路径覆盖、带权最优匹配

    二分图匹配 二分图大讲堂--彻底搞定最大匹配数(最小覆盖数).最大独立数.最小路径覆盖.带权最优匹配(转) 文本内容框架: §1图论点.边集和二分图的相关概念和性质 §2二分图最大匹配求解 匈牙利算法 ...

  9. DAG的最小路径覆盖和二分图的最大匹配

    DAG的最小路径覆盖和二分图的最大匹配 DAG的最小路径覆盖是指找最小数目的互相不相交的有向路径,满足DAG的所有顶点都被覆盖. 首先给出公式:DAG的最小路径覆盖数=DAG图中的节点数-相应二分图中 ...

最新文章

  1. 看初中生如何高薪就业
  2. AI学术大地震---YOLO之父退出CV界,以此来反对AI算法用于军事和隐私窥探
  3. 第7周实践项目1.1 环形队列中用队尾和队的元素个数来实现队列的算法库
  4. 获取Mysql语句执行时的详细信息
  5. Aspose.Words 自定义文档模版生成操作类
  6. python 调用bat失败_要想顺利通过Python面试,你最起码需要达到白银段位!
  7. HashMap的实现原理及其特点
  8. @Value和Hibernate问题
  9. 基于epoll的简单的http服务器
  10. OCP题库笔记1z0-052
  11. php页面采集正则,PHP simple_html_dom.php+正则 采集文章代码
  12. java垃圾回收 分代_Java-垃圾回收机制-通用的分代垃圾回收机制
  13. javascript——forEach跳出循环
  14. CamOdoCal_2013-IROS_多个普通相机和里程计的内参和外参自动标定
  15. 浅析JAVA设计模式之工厂模式(二)
  16. 软件工程的极端所有权
  17. FileInputStreamFileOutputStream 和 BufferedInputStreamBufferedOutputStrem的性能测试小案例
  18. 图形 1.3 纹理的秘密
  19. rust怎么传送坐标_这几天很多人问我传奇到底该怎么玩,有没有攻略什么的
  20. 蜀门linux服务端架设,蜀门1296LINUX私服服务端(红旗6架设视频+工具)

热门文章

  1. 浙江省2021年英语高考成绩查询,浙江高考成绩查询、志愿填报时间公布!
  2. webgl坐标转换_OpenGL/WebGL顶点坐标变换过程简介
  3. java 异步读写_Java异步与AIO
  4. 加密封装 怎么把_不要再封装各种Util工具类了,这个神级框架值得拥有!
  5. 拓扑排序C++实现+实例解析(详解 兄弟们冲呀呀呀呀呀呀呀)
  6. [JavaWeb-MySQL]DDL_操作数据库,表
  7. 高等数学下-赵立军-北京大学出版社-题解-练习11.2
  8. AcWing 756. 蛇形矩阵
  9. oracle错误 904,ORACLE 导出错误 EXP-00008: 遇到 Oracle 错误 904
  10. chrome主题_谷歌Chrome将很快允许用户创建自定义主题