P1525 關押罪犯

2022-05-24 07:21:09 字數 634 閱讀 7034

就是一道很簡單的並查集,其實寫完用不了多少時間。

但有幾個地方需要注意:

1.我們不能把集合想想成兩個監獄集合,而是儲存乙個enemy,否則會出現乙個問題:

當我們新列舉兩個犯人時,如果這兩個犯人都沒有出現過,我們就不知道應該把這兩個人放在哪,而且這個放法一定會對之後的結果造成影響,所以必須要enemy陣列,進行轉換。

2.就是對於0的輸出……

另外這是道貪心,因為我們要盡可能地把兩個仇恨值大的犯人分開。

**:

#include#include

using

namespace

std;

#define maxn 100005

intenemy[maxn];

struct

node

q[maxn];

intn,m,ans,par[maxn];

bool

cmp(node a,node b)

int find(int

x)void merge(int x,int

y)int

main()

else

}printf("%d

",ans);

return0;

}

P1525 關押罪犯

s 城現有兩座監獄,一共關押著n 名罪犯,編號分別為1 n。他們之間的關係自然也極不和諧。很多罪犯之間甚至積怨已久,如果客觀條件具備則隨時可能爆發衝突。我們用 怨氣值 乙個正整數值 來表示某兩名罪犯之間的仇恨程度,怨氣值越大,則這兩名罪犯之間的積怨越多。如果兩名怨氣值為c 的罪犯被關押在同一監獄,他...

P1525 關押罪犯

題目鏈結 在看了演算法高階指南的二分圖後,就對著方面的題躍躍欲試。這道題目,大佬已經把思路講的很清楚 有題目中明顯的提示 把罪犯分成兩個監獄,在同乙個監獄的罪犯之間的怨氣值要盡 可能小。那麼二分答案判定的東西就出來了。即在同乙個監獄裡的罪犯之間最大怨氣值 但是這個東西有什麼用處呢?1降低時間複雜度,...

P 1525 關押罪犯

1.題目鏈結。這和bzoj 1370是乙個東西 映象並查集。假設a n和a的敵人,把a n這個人叫做a的映象,同理b n是b的映象。然後對於給定的關係x,y連邊,邊權就是怒氣值,然後成了乙個無向帶權圖。1 先說第一種搞法,也是最直觀的。顯然題目的要求就是再說把這個圖刪掉一些邊使之成為二分圖,那麼答案...