NYOJ 237 游戏高手的烦恼

游戏高手的烦恼
时间限制:1000 ms | 内存限制:65535 KB
难度:5
描述
有一位传说级游戏高手,在闲暇时间里玩起了一个小游戏,游戏中,一个n*n的方块形区域里有许多敌人,玩家可以使用炸弹炸掉某一行或者某一列的所有敌人。他是种玩什么游戏都想玩得

优秀的人,所以,他决定,使用尽可能少的炸弹炸掉所有的敌人。

现在给你一个游戏的状态,请你帮助他判断最少需要多少个炸弹才能炸掉所有的敌人吧。

比如说,下图中X表示敌人

X . X
. X .

. X .

则,他只需要炸掉第1行与第2列就能炸掉所有的敌人,所以只需要两颗炸弹就可以了。

输入
第一行是一个整数T,表示测试数据的组数(0<T<=400)。
每组测试数据的第一行有两个整数n,K,其中n表示游戏方形区域的大小。(n<=500,K<=10 000)
随后的K行,每行有两个整数i,j表示第i行,第j列有一个敌人(行和列都从1开始编号)。(1<=i,j<=n)

输出
对于每组测试数据,输出一个整数表示最少需要的炸弹颗数

样例输入
1
3 4
1 1
1 3
2 2
3 2

样例输出
2

来源
POJ翻译而来

上传者
张云聪

解题:参考月老的难题,最大匹配问题。。。。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cmath>
 5 #include <algorithm>
 6 #include <climits>
 7 #include <vector>
 8 #include <queue>
 9 #include <cstdlib>
10 #include <string>
11 #include <set>
12 #define LL long long
13 #define INF 0x3f3f3f3f
14 using namespace std;
15 const int maxn = 510;
16 int n,llink[maxn<<1];
17 vector<int>g[maxn<<1];
18 bool used[maxn<<1];
19 bool dfs(int u) {
20     for(int v = 0; v < g[u].size(); v++) {
21         if(!used[g[u][v]]) {
22             used[g[u][v]] = true;
23             if(llink[g[u][v]] == -1 || dfs(llink[g[u][v]])) {
24                 llink[g[u][v]] = u;
25                 return true;
26             }
27         }
28     }
29     return false;
30 }
31 int main() {
32     int t,i,j,m,u,v;
33     scanf("%d",&t);
34     while(t--) {
35         scanf("%d%d",&n,&m);
36         j = n<<1;
37         for(i = 0; i <= j; i++) {
38             g[i].clear();
39         }
40         while(m--) {
41             scanf("%d%d",&u,&v);
42             g[u].push_back(n+v);
43         }
44         memset(llink,-1,sizeof(llink));
45         int ans = 0;
46         n <<= 1;
47         for(i = 1; i <= n; i++) {
48             memset(used,false,sizeof(used));
49             if(dfs(i)) ans++;
50         }
51         printf("%d\n",ans);
52     }
53     return 0;
54 }


 

NYOJ 237 游戏高手的烦恼,布布扣,bubuko.com

时间: 2024-10-10 21:55:14

NYOJ 237 游戏高手的烦恼的相关文章

NYOJ 237 游戏高手的烦恼 &amp;&amp; POJ3041-Asteroids ( 二分图的最大匹配 )

链接: NYOJ 237  游戏高手的烦恼:click here~~ POJ  3041 Asteroids           :click here~~ 题意: 两题一样,翻译不同而已. 有一位传说级游戏高手,在闲暇时间里玩起了一个小游戏,游戏中,一个n*n的方块形区域里有许多敌人,玩家可以使用炸弹炸掉某一行或者某一列的所有敌人.他是种玩什么游戏都想玩得很优秀的人,所以,他决定,使用尽可能少的炸弹炸掉所有的敌人. 现在给你一个游戏的状态,请你帮助他判断最少需要多少个炸弹才能炸掉所有的敌人吧.

nyoj237 游戏高手的烦恼(最小点覆盖)

题目237 题目信息 运行结果 本题排行 讨论区 游戏高手的烦恼 时间限制:1000 ms  |  内存限制:65535 KB 难度:5 描述 有一位传说级游戏高手,在闲暇时间里玩起了一个小游戏,游戏中,一个n*n的方块形区域里有许多敌人,玩家可以使用炸弹炸掉某一行或者某一列的所有敌人.他是种玩什么游戏都想玩得很优秀的人,所以,他决定,使用尽可能少的炸弹炸掉所有的敌人. 现在给你一个游戏的状态,请你帮助他判断最少需要多少个炸弹才能炸掉所有的敌人吧. 比如说,下图中X表示敌人 X . X . X

nyoj 游戏高手的烦恼 (二分图最小点覆盖)

还是想半天都没想明白.. 做得不多不熟,所以也联系不起来. 二分图最小点覆盖= 二分图的匹配数  详细请看某周的hihocoder 1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<cstring> 5 #include<string> 6 #include<queue> 7 #include<algorithm> 8 #inclu

NYOJ 275 队花的烦恼一

队花的烦恼一 时间限制:3000 ms  |  内存限制:65535 KB 难度:1 描述 ACM队的队花C小+经常抱怨:"C语言中的格式输出中有十六.十.八进制输出,然而却没有二进制输出,哎,真遗憾!谁能帮我写一个程序实现输入一个十进制数n,输出它的二进制数呀?" 难道你不想帮帮她吗?^_^ 输入 输入有多个数据,数据以EOF结束:每个数据ni(0<=ni<=1000010000)用空格隔开: (温馨提示:EOF即是一个文件的结束标志:while(scanf("

NYOJ 275 队花的烦恼一【二进制转换】

简单的二进制转换,注意一下数据范围就可以了 队花的烦恼一 时间限制:3000 ms  |  内存限制:65535 KB 难度:1 描述 ACM队的队花C小+经常抱怨:"C语言中的格式输出中有十六.十.八进制输出,然而却没有二进制输出,哎,真遗憾!谁能帮我写一个程序实现输入一个十进制数n,输出它的二进制数呀?" 难道你不想帮帮她吗?^_^ 输入 输入有多个数据,数据以EOF结束:每个数据ni(0<=ni<=1000010000)用空格隔开: (温馨提示:EOF即是一个文件的结

NYOJ 题目925 国王的烦恼(最小生成树变形)

国王的烦恼 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了m座大桥,每座大桥连接两座小岛.两个小岛间可能存在多座桥连接.然而,由于海水冲刷,有一些大桥面临着不能使用的危险.如果两个小岛间的所有大桥都不能使用,则这两座小岛就不能直接到达了.然而,只要这两座小岛的居民能通过其他的桥或者其他的小岛互相到达,他们就会安然无事.但是,如果前一天两个小岛之间还有方法可以到达,后一天却不能到达了,居民们就会一起发起抗议

2015广东工业大学ACM学校巡回赛 I 游戏高手 (如压力dp)

Problem I: 游戏王 Description 小学的时候,Stubird很喜欢玩游戏王.有一天,他发现了一个绝佳的连锁组合,这个连锁组合须要6张卡. 但是他一张都没有,但是他的那些朋友们有.只是当然.他们不会白给,只是也不排除有人和他交情好,送给他了. 只是他们有成全别人的美德,当他们看到Stubird已经有某些他们喜欢的卡的时候.他们会给他优惠,或者更贵也说不定 嘛只是,你能够把有的卡片藏起来,不告诉他们,来获得更低的价格. 问他最少须要多少钱才干够集齐全部的卡. Input 第一行T

棋牌源码搭建教程之棋牌游戏AI算法

棋牌游戏客户端实现采用Flash 9开发,服务端采用Win32+VC6开发(基于IOCP),数据库网关采用Win32+VC6开发(基于IOCP,MySQL5实现了处理线程池和数据库连接池).虽然服务器端去年就已经完成,但相应的机器人AI算法一直没有能力去实现.今天把它拿到Blog上来希望有机会和感兴趣的兄弟们探讨下. Kevin在他的Blog上给出了他的实现,其给出的算法思想是用宽度优先生成一棵搜索树,再根据玩牌的技巧进行剪枝与判权,机器人的AI能够像养成类游戏那样,实现在蹂躏下慢慢成长,水平逐

WebGL实现HTML5的3D贪吃蛇游戏

js1k.com收集了小于1k的javascript小例子,里面有很多很炫很酷的游戏和特效,今年规则又增加了新花样,传统的classic类型基础上又增加了WebGL类型,以及允许增加到2K的++类型,多次想尝试提交个小游戏但总无法写出让自己满意还能控制在这么小的字节范围. 自己写不出来,站在巨人肩膀总是有机会吧,想起<基于HTML5的电信网管3D机房监控应用>这篇提到的threejs,babylonjs和Hightopo的几种基于WebGL的3D引擎,突然想挑战下自己实现个100行JS的3D小