CF1328題解

daydreamer_zcxnb發表於2024-11-24

CF1328A

簡單題,我們用 \(b-a%b\) 的餘數即可,注意特判 \(a%b==0\) 即可

CF1328B

細節蠻多的,我們可以發現最終個數可以寫成 \(1+2+3+\dots +(p-1)+p+g\) 最後 \(n-p\) 就是第一個b的位置, \(n-g\) 就是第二個b的位置,可以推式子然後 \(O(n)\)

但是我選擇二分查詢g,然後注意一下細節即可

CF1328C

貪心,首先,如果數位上有2/0我們先把它均分,找到有1的最高位,則一定有一份有有一份沒有,有1的那一份一定比沒有1的那一份大,因為要讓最大值最小,所以剩下的數部分給沒有1的那一份即可

CF1328D

首先考慮一個數最多相鄰兩個數,所以顏色最多有3種

這題應該構造,但是我少考慮了一些情況,所以就沒寫出來

分類討論

所有數相等的情況,必然只有1

然後若n為偶數,則有通解1,2,1,2...

若n為奇數,則考慮必然最後有兩個1或兩個2是相鄰的,對於這種情況,把這兩個1或2,給到一組相鄰的相等的數即可,若沒有,自然是3

CF1328E

好玩的一道題!

我們轉化一下題意,就是求有從根節點出發的鏈能不能經過與此點相鄰的點或其本身

考慮樹上相鄰點的情況:

這個點的父節點和這個點的子節點或這個點,考慮因為是從根出發的鏈,所以想經過後兩種點,自然會經過父節點,所以只需要考慮一條鏈能不能經過所有點的父節點即可

怎麼操作呢?

我們先按節點深度排一下序,只需要判斷下一個節點是否在這個節點子樹內即可,然後這個過程可以用dfs序解決