CF1559D2 Mocha and Diana (Hard Version)
阿新 • • 發佈:2021-08-17
CF1559D2 Mocha and Diana (Hard Version)
思路
以下,兩圖分別稱為 A , B
首先,來證明一個貪心策略:有能連的邊就連,或者說連邊不會影響最大值
考慮一種特殊情況,A 只有兩個聯通塊,記為 x 和 y , B 只有兩個聯通塊
如果從 x 中選出任意一點都無法連線到 y 中任意一點,那麼說明 x 中任意一點和 y 中任意一點在 B 中在一個連通塊內
這樣推得 B 僅有唯一聯通塊,矛盾
所以上述情況一定可以連一條邊
有一個顯然的東西,連一條邊會讓 A 和 B 的聯通塊個數同時減 1 ,所以不難發現如果有 A 或 B 有一邊成樹了,那麼一定沒有可以連的邊了
那麼現在假設 A 有 r 個聯通塊, B 有 c 個聯通塊
不妨假設 A 和 B 中點 1 所在的聯通塊分別為 pa , pb
那麼,將 A 中除去 pa 之外的視為一個整體, B 中同理,就轉換為了上面的特殊情況
於是按上述可以一直連邊直到一邊成為一棵樹,這顯然也是能連的邊數的最大值
那麼貪心策略得證
考慮實現
首先,貪心將所有能和 1 連的點連線
那麼現在圖上只有三類點,在 A 和 B 與 1 聯通,僅在 A 與 1 聯通,僅在 B 與 1 聯通
首先發現,第一類點沒任何用,它不能任何點相連
然後顯然的,一個第二類點可以和任意一個第三類點相連,因為他們不在同一個聯通塊
於是就可以貪心的連線了
只是要注意,連線可能會使後兩類點變為第一類點,判斷一下就好
程式碼
//Nope