題解 P2057 SHOI2007 善意的投票

2021-09-10 22:21:31 字數 537 閱讀 2167

傳送們

幼兒園裡有n個小朋友打算通過投票來決定睡不睡午覺。對他們來說,這個問題並不是很重要,於是他們決定發揚謙讓精神。雖然每個人都有自己的主見,但是為了照顧一下自己朋友的想法,他們也可以投和自己本來意願相反的票。我們定義一次投票的衝突數為好朋友之間發生衝突的總數加上和所有和自己本來意願發生衝突的人數。

我們的問題就是,每位小朋友應該怎樣投票,才能使衝突數最小?

這道題的思想就是最大流=最小割,改變乙個注意就相當於是割去一條邊,割邊最少就是流最大,所以是網路流問題

至於建圖,就是同意的連s,不同意連t,如果兩個人是朋友,再連一條雙向邊,套上網路流模板就ok了

int

main()

for(

int i=

1;i<=m;

++i)

while

(bfs()

)printf

("%d"

,sum)

;return0;

}

P2057 SHOI2007 善意的投票

題目描述 幼兒園裡有n個小朋友打算通過投票來決定睡不睡午覺。對他們來說,這個問題並不是很重要,於是他們決定發揚謙讓精神。雖然每個人都有自己的主見,但是為了照顧一下自己朋友的想法,他們也可以投和自己本來意願相反的票。我們定義一次投票的衝突數為好朋友之間發生衝突的總數加上和所有和自己本來意願發生衝突的人...

洛谷P2057 SHOI2007 善意的投票

題目鏈結 這道題是最小割的乙個經典應用 劃分集合。題目的意思就是就是將所有的小朋友分為兩個集合 同意睡覺和不同意睡覺的。不同的集合之間的邊都要斷開。我們設 s 為投票結果為不想睡覺的小朋友 顏色為0 的集合 t 為投票結果為想睡覺的小朋友 顏色為1 的集合。然後對於乙個小朋友 i 設他的 顏色 為x...

P2163 SHOI2007 園丁的煩惱

傳送門 矩陣內點數顯然可以預處理字首和然後簡單容斥一下 具體就是設 sum i j 表示以 i,j 為右上角,以 0,0 為左下角的矩陣的點數 那麼對於詢問以 xa,ya 為左下角,以 xb,yb 為右上角的矩形點數 注意到詢問區間是閉的,顯然答案就是 sum xb yb sum xb ya 1 s...