1. 程式人生 > >BZOJ 1854 SCOI 2010 遊戲 二分圖最大匹配

BZOJ 1854 SCOI 2010 遊戲 二分圖最大匹配

題目大意:現在要打一個BOSS,一個人有n個武器,一個武器有兩個屬性值,但是一個武器只能攻擊一次。這個BOSS需要從1連續遞增輸出,問輸出的最大值為多少。

思路:以前好像做過一個相似的問題,也是這麼做的,哪個忘了。。

很明顯的二分關係是攻擊力和武器,因為一個攻擊力需要攻擊一次,一個武器只能攻擊一次,然後武器和攻擊力之間連邊,從1開始匹配,什麼時候不能匹配了就輸出。

memset會T的,時間戳大法好。

CODE:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define MAX 1010010
#define BASE 10001
using namespace std;

int cnt;
int head[MAX],total;
int next[MAX << 1],aim[MAX << 1];

int paired[MAX];
int v[MAX],T;

inline void Add(int x,int y)
{
	next[++total] = head[x];
	aim[total] = y;
	head[x] = total;
}

bool Hungary(int x)
{
	for(int i = head[x]; i; i = next[i])
		if(v[aim[i]] != T) {
			v[aim[i]] = T;
			if(!paired[aim[i]] || Hungary(paired[aim[i]])) {
				paired[aim[i]] = x;
				return true;
			}
		}
	return false;
}

int main()
{
	cin >> cnt;
	for(int x,y,i = 1; i <= cnt; ++i) {
		scanf("%d%d",&x,&y);
		Add(x,i + BASE);
		Add(y,i + BASE);
	}
	for(int i = 1; i <= BASE; ++i) {
		++T;
		if(!Hungary(i)) {
			cout << i - 1 << endl;
			return 0;
		}
	}
	return 0;
}


相關推薦

BZOJ 1854 SCOI 2010 遊戲 二分匹配

題目大意:現在要打一個BOSS,一個人有n個武器,一個武器有兩個屬性值,但是一個武器只能攻擊一次。這個BOSS需要從1連續遞增輸出,問輸出的最大值為多少。 思路:以前好像做過一個相似的問題,也是這麼做的,哪個忘了。。 很明顯的二分關係是攻擊力和武器,因為一個攻擊力需要攻擊

BZOJ 1854 SCOI2010 遊戲 二分匹配/並查集

題目大意:給定n個武器,每個武器有兩個屬性,只能使用其中一個,要求選擇一些武器 可以造成形如1 2 3 4的傷害 求最大傷害 題目大意我沒寫明白還是去看原題把QAQ 做法1: 同 1191 每個武器向兩個屬性連邊 然後從1~10000列舉屬性 跑二分圖最大匹配 無法匹配則輸

HDU 1281 - 棋盤遊戲 - [二分匹配]

鏈接 ems 枚舉 一個 輸入 string ima () have 題目鏈接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1281 Time Limit: 2000/1000 MS (Java/Others) Memor

BZOJ-4950: [Wf2017]Mission Improbable (二分匹配)

尺寸 inpu ron nbsp load stat esc set 所在 4950: [Wf2017]Mission Improbable Time Limit: 1 Sec Memory Limit: 1024 MBSubmit: 195 Solved: 90[S

HDU1281 棋盤遊戲 —— 二分匹配 + 枚舉

mage 技術 bottom sub .html 攻擊 ava string ostream 題目鏈接:https://vjudge.net/problem/HDU-1281 棋盤遊戲 Time Limit: 2000/1000 MS (Java/Others)

bzoj 1059: [ZJOI2007]矩陣遊戲 [二分][二分匹配]

sam auto round 包含 bool edge port void 最大 Description   小Q是一個非常聰明的孩子,除了國際象棋,他還很喜歡玩一個電腦益智遊戲——矩陣遊戲。矩陣遊戲在一個N *N黑白方陣進行(如同國際象棋一

bzoj 1854】[Scoi2010]遊戲 二分匹配

http://blog.csdn.net/pbihao/article/details/52835849 額,感覺像是一道題改一下就好了 #include<cstdio> #inclu

Bzoj 4950 (二分匹配)

void ide 機會 出現 geo front 老朋友 放置 scrip Description 那是春日裏一個天氣晴朗的好日子,你準備去見見你的老朋友Patrick,也是你之前的犯罪同夥。Patrick在編程競賽 上豪賭輸掉了一大筆錢,所以他需要再幹一票。為此他需要你

洛谷P2774 方格取數問題 BZOJ 1143祭祀river【二分獨立集】

網絡 方格取數 == 二分圖最大獨立集 ostream pro 就會 最大流 HR 講解前首先引入兩個概念 二分圖最小點覆蓋集 定義: 在二分圖中求出一個最小點集 使得圖中任意一條邊至少有一個端點在點集內 解法: 對二分圖進行最大匹配 最大匹配數就是二分圖的最小點覆蓋集包含

bzoj-1191(二分匹配)

max () int visit div define true esp cout 解題思路:比較裸的一道題,直接跑匈牙利就行了,但是要註意一點,這個兔崽子是在闖關,一道題回答不出來就沒了,直接在題目循環那裏加一個else break;就行了!!!; #include&l

【BZOJ1059】矩陣遊戲二分匹配

set 交換 tdi namespace 顏色 pac 連線 include amp 題意:矩陣遊戲在一個N*N黑白方陣進行。每次可以對該矩陣進行兩種操作: 行交換操作:選擇矩陣的任意兩行,交換這兩行(即交換對應格子的顏色) 列交換操作:選擇矩陣的任意行列,交換這兩列(即交

[BZOJ]4950 二分 + 匹配

那是春日裡一個天氣晴朗的好日子,你準備去見見你的老朋友Patrick,也是你之前的犯罪同夥。Patrick在程式設計競賽上豪賭輸掉了一大筆錢,所以他需要再幹一票。為此他需要你的幫助,雖然你已經金盆洗手了。你剛開始很不情願,因為你一點也不想再回到那條老路上了,但是你覺得聽一下他的計劃也無傷大雅。在附近的一個倉庫

[bzoj1854][Scoi2010]遊戲(並查集/二分匹配

#include<cstdio> #include<algorithm> #include<cmath> #include<cstdlib> #i

[BZOJ]3140 二分匹配

3140: [Hnoi2013]消毒 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1339  Solved: 588 [Submit][Status][Discuss] Description 最近在生物實驗室工作

【SCOI2010】【二分匹配遊戲

這道題很明顯的二分圖模型,但是建圖是關鍵。 將一件武器的兩個屬性看作二分圖左邊的點,然後把這兩個點與要攻擊的點連兩條邊。 這樣原問題就轉化為了在一個二分圖上從小到大地找增廣路,一旦未找到增廣路,那此時

[二分匹配必配點] BZOJ 3546 [ONTAK2010]Life of the Party

#include<cstdio>     #include<cstdlib>     #include<algorithm>     #include<cstring>     #define cl(x) memset(x,0,sizeof(x))     #d

BZOJ 4950 [Wf 2017] 二分匹配 解題報告

Description 那是春日裡一個天氣晴朗的好日子,你準備去見見你的老朋友Patrick,也是你之前的犯罪同夥。Patrick在程式設計競賽上豪賭輸掉了一大筆錢,所以他需要再幹一票。為此他需要你的幫助,雖然你已經金盆洗手了。你剛開始很不情願,因為你一點也不

bzoj 1143:[CTSC2008]祭祀river 二分獨立集

  在遙遠的東方,有一個神祕的民族,自稱Y族。他們世代居住在水面上,奉龍王為神。每逢重大慶典, Y族都 會在水面上舉辦盛大的祭祀活動。我們可以把Y族居住地水系看成一個由岔口和河道組成的網路。每條河道連線著 兩個岔口,並且水在河道內按照一個固定的方向流動。顯然,水系中不會有環流(下圖描述一個環流的例子)。  

[POJ2446] Chessboard(二分匹配-匈牙利算法)

con clas sed img find span ble names printf 傳送門 把所有非障礙的相鄰格子彼此連一條邊,然後求二分圖最大匹配,看 tot * 2 + k 是否等於 n * m 即可。 但是連邊不能重復,比如 a 格子 和 b 格子 相鄰

POJ1469 COURSES 【二分匹配&#183;HK算法】

pri number break integer iss pre win rop find COURSES Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 17777 Acce