1. 程式人生 > 其它 >AtCoder Beginner Contest 173 題解

AtCoder Beginner Contest 173 題解

這場的 F 題太逆天了。

AC 程式碼傳送門:
https://atcoder.jp/contests/abc173/submissions/me?f.Task=&f.LanguageName=&f.Status=&f.User=HinanawiTenshi

E

分類討論 + 貪心。

  • 結果 \(res\) 為負數時,說明 \(k\) 為奇數而且所有數為負數,那就從大到小選取即可。
  • 結果 \(res\) 非負時,如果 \(k\) 為奇數,那麼我們必然要先選一個最大值,問題統一化為 \(k\) 為偶數怎麼選。注意到最後選取的結果必然是偶數個非負,偶數個負數,我們採取貪心,對數列從大到小排序,如果左部分的兩個數大於右部分,那就選左部分,否則選右部分。

F

題意:統計樹上編號 \([l, r]\) 所對應的點連通塊的數量,\(l\in[1, n],r\in[l, n]\)

程式碼極短的思維題。

我們首先假定所有點為孤立點,那麼對於編號為 \(i\) 的點,它的貢獻為 \(i\times(n-i+1)\)

接下來我們直接按輸入順序連邊即可(連邊過程類似生成樹)。

那麼對於邊 \((u, v)\),它相當於使 \([1,u]\times[v,n]\) 的連通塊個數 \(-1\)