Mix the Colors
顯然每次選最大的數加到一個數上是最優的,那麼答案就是 。
代碼
Chef and Easy Problem
預處理出每個二進制位的前綴和,詢問時枚舉每一位貪心選就好了。
代碼
Minions and Voting
枚舉每個點,二分出他會投給誰,正反各做一遍就好了。
代碼
Chef and Gcd Queries
對於每個值開個動態線段樹,複雜度 。
代碼
Pishty and Triangles
一種比較顯然的做法是從大到小枚舉最大的 個數作爲 條邊,判斷是否合法,如果合法就輸出,否則去掉最大的數繼續找。發現最多隻會判斷 次,用線段樹維護前 大就好了。
代碼
Chef and Interval Painting
打表,然後放到oeis上找一下可以得到:
其中 表示第一類斯特林數。
可以用分治FFT預處理出第一類斯特林數。
代碼
Chef Cuts Tree
一個連通塊 的權值可以表示爲 ,即連通的點對數。
顯然一對點連通的概率只取決於它們的距離。
設 表示樹中長度爲 的路徑條數。假設我們已經求出了 數組,那麼刪去 條邊的答案就是
設 ,那麼
設 ,於是 ,是個卷積的形式,可以FFT求出。
現在的問題就是如何求出 數組。
考慮點分治,發現合併的時候是一個卷積的形式,用FFT優化就好啦。
由於模數不是NTT模數,要用三模數NTT。
還要卡卡常。。。
代碼