NOIP2010 關押罪犯prison

2022-08-15 01:30:16 字數 862 閱讀 7596

【問題描述】

有兩個監獄,要關押n個罪犯。兩個罪犯直接可能會有怨氣值,若這兩人在同乙個監獄,則會爆發乙個事件,事件的影響力等於兩個罪犯的怨氣值。答案等於所有事件的影響力的最大值,要使答案最小。有m對罪犯有怨氣值。

n≤20000,m≤100000

【分析】

曾經有大牛說過,一般題目求「最小值的最大值」或「最大值的最小值」的話,都可以用二分做。這句話真心很好用啊!

二分答案,然後構造二分圖,即怨氣值大於答案的罪犯需在不同監獄,若可以構造則修改右邊界,否則修改左邊界。總時間複雜度o(n log c)。

【**】

ps:懶得寫鍊錶直接用vector存邊不要介意。

#include #include 

#include

#include

#include

using

namespace

std;

struct

edge

};vector

e[20010

];int a[20010

];bool p[20010

];int

n,m;

intmax;

bool dfs(int

x) }

else

}return

true;}

bool check(int

k)int

main()

int l = 1,r = 0x3f3f3f3f

;

while (r >l )

cout

}

noip2010 關押罪犯

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

NOIP2010關押罪犯

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

NOIP 2010 關押罪犯

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