Asteroids POJ - 3041 Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x N grid (1 <= N <= 500). The grid contains K asteroids (1 <= K <= 10,000), which are conveniently located at the lattice po…
Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x N grid (1 <= N <= 500). The grid contains K asteroids (1 <= K <= 10,000), which are conveniently located at the lattice points of the grid. Fortun…
题意: 假如你如今正处在一个N*N的矩阵中,这个矩阵里面有K个障碍物,你拥有一把武器,一发弹药一次能消灭一行或一列的障碍物,求最小的弹药消灭所有障碍物 输入为:     N K 接下来有K行,每行包括障碍物的坐标,即r行c列; 如: 3 4  1 1 1 3 2 2 3 2 输出为:     花费最小的弹药数 思路:将i行作为X集合.将j列作为Y集合.这样原来的问题-用最少的炮弹打掉所有障碍物,转化为了这么一个问题: 在二分图中选择尽量少的点,使得每条边至少有一个端点被选中 裸的最小点覆盖问题,…
题目就是问怎样用最小的板覆盖全部的草地.能够横着放.也能够竖着放,同意一个草地放多个点. 建图方法就是 每一个横向的草地作为X,纵向连续的草地作为Y.     X连接Y的边表示,  这里有他们的公共点.. 非常显然,覆盖全部草地,就是覆盖全部的边 ,二分图中.最小点覆盖 = 最大匹配 = =事实上假设存在一条边未被选中的节点覆盖,则必定存在一条相应的增广路径 //tpl //ipqhjjybj_tpl.h //header.h #include <cstdio> #include <cs…
  Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 17258   Accepted: 9386 Description Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x N grid (1 <= N <= 500). The grid contains K asteroids…
题目链接:Asteroids - POJ 3041 - Virtual Judge  https://vjudge.net/problem/POJ-3041 第一行输入一个n和一个m表示在n*n的网格里有m个小行星,接下来m行都会有一个小行星的坐标(x,y),现在有一种武器可以一次性把一行或一列上的小行星消灭掉,现在问我们最少要多少次攻击才能消灭所有的小行星. 第一次做二分图最小点覆盖的题目,思路是我们把每一行每一列都抽象成一个点,总共n*n个,行和列的点组成两个点集,那么小行星的坐标(x,y)…
题意: 给出一个N*N的地图N   地图里面有K个障碍     你每次可以选择一条直线 消除这条直线上的所有障碍  (直线只能和列和行平行) 问最少要消除几次 题解: 如果(x,y)上有一个障碍 则把X加入点集 V1 .Y加入点集V2   并且X Y连一条边  这样构成一个新图 如果选择 V1中的点 X 那么就相当于消去 (X,y)中的所有Y    要找使最小点覆盖 那就是跑一遍 匈牙利就行了 详细证明见二分图最小点覆盖König定理 其中 x y需要连单向边 不然会造成混乱 因为x=1 y=1…
题目地址:http://poj.org/problem?id=2226 二分图的题目关键在于建图.因为“*”的地方只有两种木板覆盖方式:水平或竖直,所以运用这种方式进行二分.首先按行排列,算出每个"*"的序号xi,再按列排序,算出序号yi. 从X集合向Y集合连边.G[xi][yi]=1; 然后就是求二分图的最小顶点覆盖.因为二分图最小点覆盖=最大匹配数.所以匈牙利算法求一下最大匹配就可以了. #include<cstdio> #include<iostream>…
Asteroids POJ - 3041 题目大意:N*N的地图里,存在一些小行星,Bessie有个很牛x但又很耗蓝的武器,一次可以消灭一行或者一列的所有小行星,问最少使用多少次这个武器可以消灭所有的小行星? 第一次做这种建图的题,把每一行和每一列都视为一个点,然后给出的小行星坐标x,y就视为在x点和y点间连一条边,那么就是求最小点覆盖,而最小点覆盖=最大匹配(具体概念和证明之后再填坑),所以直接跑一遍匈牙利算法 #include<cstdio> #include<cstring>…
题目给张R×C的地图,地图上*表示泥地..表示草地,问最少要几块宽1长任意木板才能盖住所有泥地,木板可以重合但不能盖住草地. 把所有行和列连续的泥地(可以放一块木板铺满的)看作点且行和列连续泥地分别作为XY部,每一块泥地看作边.这样就构造出了一个二分图. 那么,问题就是在这个二分图中就是选出最少的点覆盖所有的边,即二分图最小点覆盖集,而二分图最小点覆盖集=二分图最大匹配. #include<cstdio> #include<cstring> #include<queue>…