题目描述

你玩过call of duty这个游戏吗?这个游戏以诺曼底登陆为背景,假设你是盟军的一员,身在前线去完成许多任务而粉碎纳粹的野心。现在假设有一个任务,德军有很多机枪阵地,火力很猛,如果不把它们摧毁就会对盟军的推进造成很大损失,盟军打算派出一些敢死队员深入阵地把这些机枪阵地炸毁,当然,敢死队员会有很大的生命危险,所以盟军的指挥官希望你能帮他把损失降到最少。

Input
输入数据第一行是一个整数n(1<=n<=200),代表有多少个机枪阵地需要摧毁。然后接下来n行,每行两个整数xi,yi,代表每个机枪阵地的坐标(0<=xi,yi<=30000),然后接着一个整数m,跟着有m行,每行两个整数p和q(1<=p,q<=n,p<>q),代表机枪阵地p和机枪阵地q之间有路相连,敢死队员炸掉一个机枪阵地之后,必须从当前的机枪阵地出发沿着路到达下一个x坐标比当前阵地大的阵地(因为机枪阵地的纵深方向是沿着x坐标递增方向的),如果不存在这样的阵地,那这名敢死队员就完成任务了。简单来说,一个敢死队员可以空降到任意一个机枪阵地(设为a0),然后从这个阵地出发按照上面所述可以摧毁一系列机枪阵地(顺序列为a0,a1,a2…ak),而这一系列机枪阵地的x坐标满足(x0 < x1 < x2 < … < xk)。从安全和效率出发,每个敢死队员可以带任意个炸弹。任意两个敢死队员的路线不能有交点。现在问你怎么安排敢死队员的路线,可以使到用最小数目的敢死队员去完成这个艰巨的任务。

Output
输出一个整数,就是所求的敢死队员的最小数目。

Sample Input
4
25990 5850
8263 2957
1067 22231
4109 4577
3
4 1
2 4
1 3

Sample Output
2

Data Constraint
m<10000

Hint
解释:
上面的例子最少需2个敢死队员,1种方案是:1个摧毁阵地4后再去摧毁阵地2,1个敢死队员摧毁阵地3后去摧毁阵地1。

分析

这题样例描述吓我一跳,交(juo)点?计算几何?打什么啊?
然后冷静下来,发现这个路不一定相交啊,绕圈子还不行吗?
那么相交的情况只有点点接触了
即不能有公共点
这不就是二分图嘛
把一个点拆成出点和入点
那么没有连到任何一个入点的出点肯定是结尾,就是路径条数了
所以答案为n-ans

#include <iostream>
#include <cstdio>
#include <memory.h>
#define rep(i,a,b) for (i=a;i<=b;i++)
const int N=201;
using namespace std;
int g[N][2*N];
int x[N],y[N];
int n,m,ans;
int f[2*N];
bool come[2*N];bool aug(int u) {int i;rep(i,n+1,2*n)if (g[u][i]&&!come[i]) {come[i]=1;if (!f[i]||aug(f[i])) {f[i]=u;return 1;}}return 0;
}int main() {int i,j;scanf("%d",&n);rep(i,1,n) scanf("%d%d",&x[i],&y[i]);scanf("%d",&m);rep(i,1,m) {int u,v;scanf("%d%d",&u,&v);if (x[u]>x[v]) swap(u,v);g[u][n+v]=1;}rep(i,1,n) {memset(come,0,sizeof come);if (aug(i)) ans++;}printf("%d",n-ans);
}

[二分图]使命的召唤相关推荐

  1. 【JZOJ1156】【GDKOI2004】使命的召唤(二分图匹配)

    Problem   给定n(≤200)个机枪阵地,阵地i有两个整数xi,yi(0<=xi,yi<=30000)代表其坐标.给出m(≤30000)条连接两个阵地的路.一个敢死队员可以空降到任 ...

  2. jzoj1156. 【GDKOI2004】使命的召唤

    题目描述 Description 你玩过call of duty这个游戏吗?这个游戏以诺曼底登陆为背景,假设你是盟军的一员,身在前线去完成许多任务而粉碎纳粹的野心.现在假设有一个任务,德军有很多机枪阵 ...

  3. [匈牙利] Jzoj P1156 使命的召唤

    Description 你玩过call of duty这个游戏吗?这个游戏以诺曼底登陆为背景,假设你是盟军的一员,身在前线去完成许多任务而粉碎纳粹的野心.现在假设有一个任务,德军有很多机枪阵地,火力很 ...

  4. 【GDKOI2004】使命的召唤

    Description 你玩过call of duty这个游戏吗?这个游戏以诺曼底登陆为背景,假设你是盟军的一员,身在前线去完成许多任务而粉碎纳粹的野心.现在假设有一个任务,德军有很多机枪阵地,火力很 ...

  5. 【JZOJ B组】【GDKOI2004】使命的召唤

    Description 你玩过call of duty这个游戏吗?这个游戏以诺曼底登陆为背景,假设你是盟军的一员,身在前线去完成许多任务而粉碎纳粹的野心.现在假设有一个任务,德军有很多机枪阵地,火力很 ...

  6. 1156. 【GDKOI2004】使命的召唤

    Description 你玩过call of duty这个游戏吗?这个游戏以诺曼底登陆为背景,假设你是盟军的一员,身在前线去完成许多任务而粉碎纳粹的野心.现在假设有一个任务,德军有很多机枪阵地,火力很 ...

  7. [2008-05-18]我们的使命

    电脑节的讲座中 翟院长结束时说:让我们一起为中国计算机而奋斗! 尽管那时散场,心里向往着回宿舍堕落 但我却凝视着幕布: 这就是我们的使命! 14点本来是个艳阳高照的时间 但今天阴天了 下雨了 灰蒙蒙的 ...

  8. 2018.07.17【省赛模拟】模拟B组 比赛总结

    题目 [GDKOI2003]最大公共子串 [题目描述] 从一个给定的串中删去(不一定连续地删去)0个或0个以上的字符,剩下的字符按原来的顺序组成的串是该串的字串.例如:"", &q ...

  9. 2018.07.17【省赛模拟】模拟B组 比赛题解(总结)

    今天一看排名,what the,又垫底了,新初二第一YYT287.5,第二WYD120 T1: 最大公共子串 分类讨论+DP 题目描述 从一个给定的串中删去(不一定连续地删去)0个或0个以上的字符,剩 ...

最新文章

  1. 开发人员学Linux(8):CentOS7编译安装Subversion及Apache并集成
  2. 七十、Vue城市页面Ajax动态渲染和兄弟组件数据传递
  3. 几种在shell命令行中过滤adb logcat输出的方法
  4. 间歇输入数据的数据处理设计模式
  5. Ubuntu Eclipse 解决中文乱码
  6. java 对数运算_使用java计算log值
  7. 用 mkcert 搭建本地开发受信 HTTPS 证书环境
  8. 【历史上的今天】7 月 4 日:第一本电子书问世;磁条卡的发明者出生;掌上电脑先驱诞生
  9. Pandas合并之Merge合并
  10. c语言通过epoll来实现http协议的web服务器
  11. 扇贝编程可以用c语言吗,扇贝编程手机版下载_扇贝编程app下载 v1.1.41 - 87G手游网...
  12. 用python识别微信消息界面聊天输入框位置
  13. LeetCode 347. 前 K 个高频元素(C++)*
  14. mysql声明变量关键字_声明变量的关键字
  15. currentTimeMillis()的解释
  16. 《有效训练你的研究能力》读书笔记
  17. 数据压缩实验三:用c语言实现Huffman编码和压缩效率分析
  18. 贼简单的Android计时工具,老铁,还不试用起来。
  19. iOS 如何开启Passbook
  20. 【机器学习】鸢尾花分类

热门文章

  1. bzoj1132 [POI2008]Tro
  2. python+vue宠物用品商城网站django宠物领养系统31e70
  3. 什么样的功能可以提升加密货币的币值 ?
  4. Windows 11 獲得新的多應用程序介面模式
  5. 新星计划第一周,已经有不少新星出道,在冉冉升起了
  6. java solarsystem,桌面小游戏二:模拟太阳系solarSystem
  7. Python如何截取视频的帧
  8. G3,是塔克和阿德巴约的热火队
  9. 焦点图(轮播图)的实现及详解
  10. 举例说明儿化音的作用_儿化音的作用是什么