http://poj.org/problem?id=3041 Asteroids Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 17543   Accepted: 9548 Description Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x N grid (1 <= N <…
Asteroids Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22905   Accepted: 12421 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 a…
http://poj.org/problem?id=3041 题目大意: 一辆宇宙飞船在一个小行星带中,你知道,这很危险.他有一种武器,可以清除掉一行或一列的小行星.问把小行星全部清除最少的武器使用次数. 思路: 因为每次可以清除掉一行或者一列,所以可以把行和列建成图,行和列为边,因为最后要全部清除,也就是说所有边都使用过,正好就是最小覆盖数. 最小覆盖数=最大匹配. #include<cstdio> #include<cstring> const int MAXN=500+10;…
Asteroids Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16242 Accepted: 8833 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 astero…
题意 给出一个N*N的矩阵,有些格子上有障碍,要求每次消除一行或者一列的障碍,最少消除多少次可以全部清除障碍. 思路 把关键点取出来:一个障碍至少需要被它的行或者列中的一个消除. 也许是最近在做二分图匹配专辑吧--很容易想到这就是最小点覆盖集:每条边都至少需要一个点被选中,称这条边被覆盖. 而由König定理可知二分图最小点覆盖 = 最大匹配.所以解法也就出来了:把行当作左点集,列当作右点集,对于每一个障碍,把它的行和列对应的点连一条边,此二分图的最大匹配就是答案了. 代码 using name…
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 (1 <= K <= 10,000), which are conveniently located at the lattice points of the…
原题 本题为最小点覆盖,而最小点覆盖=最大二分图匹配 //最小点覆盖:用最少的点(左右两边集合的点)让每条边都至少和其中一个点关联. #include<cstdio> #include<cstring> #define N 510 using namespace std; int edge[N][N],n,m,lover[N],ans; bool vis[N]; bool find(int x) { for (int i=1;i<=n;i++) if (edge[x][i]…
POJ 3041 Asteroids / UESTC 253 Asteroids(二分图最大匹配,最小点匹配) 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 (1 <= K <= 10,000), whic…
题目传送门 /* 题意:每次能消灭一行或一列的障碍物,要求最少的次数. 匈牙利算法:把行和列看做两个集合,当有障碍物连接时连一条边,问题转换为最小点覆盖数==二分图最大匹配数 趣味入门:http://blog.csdn.net/dark_scope/article/details/8880547 */ #include <cstdio> #include <algorithm> #include <cstring> #include <vector> usi…
题目:POJ 3041 Asteroids http://poj.org/problem?id=3041 分析: 把位置下标看出一条边,这显然是一个二分图最小顶点覆盖的问题,Hungary就好. 挑战: 输出一组可行解.构造,已知二分图的两个点集U和V,s-U-V-t,在最大匹配的残留网络里,选从s出发能到达的V中的点 沿途可以到达的U集中的点的路径就都被覆盖了,然后在选择U集合中无法到达的点.对于二分图中任意一条边,其中必有一点属于U集合, 所以前面选出的点集S是一个覆盖.并且S中V和U对应的…
poj       3041——Asteroids Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22604   Accepted: 12247 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 g…
1.有一个n*n的矩阵,在矩阵上有k个行星,用武器射击一次可以消灭一行或者一列的行星,求消灭所有的行星的最少射击次数. 2.最小点覆盖数 = 最大匹配数 主要在于转化:看图: 这样,在建成的二分图中,一条边代表一个行星,左边的一个点代表横向射击,右边的一个点代表竖向射击. 要求最少的射击次数把所有的行星消灭,即选择最少的点,把所有的边覆盖.这不正是求最小点覆盖数吗. ps: 顶点覆盖:在顶点集合中,选取一部分顶点,这些顶点能够把所有的边都覆盖了.这些点就是顶点覆盖集 最小顶点覆盖:在所有的顶点覆…
http://poj.org/problem?id=3041 Asteroids Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12601   Accepted: 6849 Description Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x N grid (1 <= N <…
   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…
题目:http://poj.org/problem?id=3041 题意:在某个n*n的空间内,分布有一些小行星,某人在里面打炮,放一枪后某一行或某一列的行星就都没了,让求最少的打炮数. 然后把每行x或者每列y看成一个点,而障碍物(x,y)可以看做连接x和y的边.按照这种思路构图后. 问题就转化成为选择最少的一些点(x或y),使得从这些点与所有的边相邻,其实这就是最小点覆盖问题. 再利用二分图最大匹配的König定理:最小点覆盖数 = 最大匹配数 现在还是很多地方不会 最小点覆盖:假如选了一个点…
原题连接:http://poj.org/problem?id=3041 Asteroids Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 17985   Accepted: 9798 Description Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x N grid (1 <…
 最小点覆盖数==最大匹配数 Asteroids Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12678 Accepted: 6904 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 co…
Asteroids Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20686   Accepted: 11239 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 a…
( ̄▽ ̄)" #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<vector> #include<queue> using namespace std; ; int uN; //二分图左边的点集 vector<int> g[MAXN]; //存储矩阵数据 int link[MAXN]; //记录右边…
题目大意:给你一个N*N的矩阵, 里面有K个星球, 我们可以让武器攻击矩阵的一行或者一列来使得这个星球被击碎, 现在问你最少需要几个这种武器才能把所有的星球击碎? 解题思路:关键是建模构图 把每一行当成一个行节点(也当成一把武器,因为一把武器可以消灭一行),构成集合1,每一列当成一个列节点(也当成一把武器,因为一把武器可以消灭一列),构成集合2,则共有2*N(N个行节点,N个列节点,即2*N把武器)节点.若某行某列有一个障碍物,则该行节点和该列节点之间构成一条边.每一个障碍物的位置坐标将集合1与…
###题目链接### 题目大意: 给你 N 和 K ,在一个 N * N 个图上有 K 个 小行星.有一个可以横着切或竖着切的武器,问最少切多少次,所有行星都会被毁灭. 分析: 将 1~n 行数加入左集合,将 1~n 列数加入右集合.然后将所给的所有点当成无向边,在二分图上连接. 1.对于每条边,只要有其中一个端点被选取,则该条边所代表的行星就可以被摧毁.同样,如果选取了这个端点,则所有与这个端点连接的所有行星都会被一次摧毁. 2.对于样例,假设我选取了 1(左集合)--- 1(右集合) 这条边…
题目链接:http://poj.org/problem?id=3041 在一个n*n的地图中,有m和障碍物,你每一次可以消除一行或者一列的障碍物,问你最少消除几次可以将障碍物全部清除. 用二分图将行(左边)和列(右边)用障碍物联系起来,比如(2,3)有个障碍物,那么左边的2和右边的3连边.边的个数就是障碍物的个数,点的个数就是次数,所以问题就变成了用少的点覆盖全部的边,也就是最小点覆盖问题.二分图中,最小点覆盖=最大匹配数. //最小点覆盖 = 最大匹配 #include <iostream>…
嗯... 题目链接:http://poj.org/problem?id=3041 这道题的思想比较奇特: 把x坐标.y坐标分别看成是二分图两边的点,如果(x,y)上有行星,则将(x,y)之间连一条边,而我们要做的就是要找尽量少的点把所有的边覆盖,即为最小点覆盖问题,根据König定理:最小覆盖点数=最大匹配数,所以就可以用匈牙利算法求最大匹配了. AC代码: #include<cstdio> #include<cstring> #include<iostream> us…
Asteroids Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 24789   Accepted: 13439 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 a…
                                                                  Asteroids Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20748   Accepted: 11278 Description Bessie wants to navigate her spaceship through a dangerous asteroid field in…
题意:n*n的网格中有k个点,开一枪能摧毁一行或一列的所有点,问最少开几枪 思路:我们把网格看成两个集合,行集合和列集合,如果有点x,y那么就连接x->y,所以我们只要做最小点覆盖就好了. 参考:POJ3041-Asteroids 代码: #include<set> #include<map> #include<stack> #include<cmath> #include<queue> #include<vector> #in…
Asteroids Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16379   Accepted: 8930 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 as…
题意: N*N的矩阵,有K个敌人,坐标分别是(C1,C1),.....,(Rk,Ck). 有一个武器,每发射一次,可消掉某行或某列上的所有的敌人. 问消灭所有敌人最少需要多少发. 思路: 二分建图:左边N个点代表行号,右边N个点代表列号.如果第i行第j列上有敌人,则将左边点i和右边点j连一条线. 则转化为求此二分图的最小点覆盖,即最大匹配.[这个建图思想太妙了!赞!] 代码: int n,k; vector<int> graph[505]; bool bmask[505]; int cx[50…
题目链接: http://poj.org/problem?id=3041 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 (1 <= K <= 10,000), which are conveniently…