Codevs 1069關押罪犯 Noip2010

2021-07-09 14:46:14 字數 792 閱讀 1592

ac通道:

[分析]

可以發現,因為市長只會關心衝突事件影響力的最大值,所以無論你怎麼把罪犯們分開,只要衝突事件影響力最大的那兩個人還在同一所監獄,衝突事件影響力的最大值就不會改變。所以我們可以採取貪心的思想,每次將衝突事件影響力最大的兩個人分開,直到這兩個人根據前面的條件,已經分不開了,那麼最大值就是他們所能產生的影響力的最大值。

因為「分開」這個操作不好實現,所以我們設,若a,b兩個人分開,那麼a,b『就在同一所監獄中,及a,b』在同乙個集合中。將影響力按從大到小的順序排個序,每次分開兩個人a,b,都將a,b『合併,a』,b合併。若分開a,b時,發現a,b已經在同乙個集合中,那麼就直接輸出它們影響力的值。

#include #include #include using namespace std;

struct edge;

bool cmp(const edge a,const edge b)

int n,m;

int fa[40010];

edge edge[200010];

bool flag;

inline int find(int x)

return tmp;

}inline void merge(int x,int y)

int main()

if(!flag||n==2)

sort(edge+1,edge+1+m,cmp);

for(int i=1;i<=m;i++)

else

} return 0;

}

CODEVS 1069 關押罪犯

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

wikioi 1069 關押罪犯

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

Wikioi 1069 關押罪犯

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