C
可以考慮長度為 \(k\) 的區間右移一位造成的影響。
所以可以得到 \(s_i=s_{i+k}\) 這個結論,所以其實只要構造出第一個長度為 \(k\) 的區間即可。
對於第一個長度為 \(k\) 的區間上的每一位,判斷能填 \(0/1\) 中的哪些數,如果 \(0/1\) 中的一個超過了 \(\frac{k}{2}\) 或者存在矛盾就是無解。
D
考慮這個問題在鏈上的情況,如果說 Alice 追不上 Bob,大概是因為 \(db>2 \times da\),這樣的話 Bob 可以在 Alice 來了之后馬上跑路。
如果 \(db\) 可能會大於 \(n-1\),只要把 \(db\) 對 \(n-1\) 取 \(\min\) 就行了。
對於樹上的情況,只需要把 \(db\) 對樹的直徑取 \(\min\)。
因為 Alice 先手,需要特判 Alice 可以一步追到 Bob 的情況。
E
如果只有一次詢問操作,考慮怎么做這個東西。
仔細思考一下,如果一個比較靠后的數當前沒有消掉,那么之后一定再也消不掉了。
所以最優策略就是每次取最后一個能消掉的,這里我只會用分塊去找到最后一個合法的位置。
對於詢問的限制,首先右端點可以直接用數據結構維護,其實左端點只要用類似掃描線的思想也是能做的。
F
如果 \(n\) 是偶數,可以選擇 First 並把 \(i\) 和 \(i+n\) 分到一組去。
這樣的話得到的結果一定是 \(\frac{n(n+1)}{2}+kn \equiv \frac{n}{2} \pmod n\)。
如果 \(n\) 是奇數,選擇 Second。
可以把給出的點對連上邊,再把 \(i\) 與 \(i+n\) 連上邊,這樣就可以發現每個點的度數都是 \(2\),這個圖仍然是一個二分圖。
所以一定可以取出 \(\bmod n \equiv 0,1,2 \dots n-1\) 中每個數各一次,這個值 \(\bmod n \equiv \frac{n(n-1)}{2} \equiv 0\)。
可以這個玩意 \(\bmod 2n\) 就不一定為 \(0\) 了,但是可以發現全部數的總和為 \(\frac{2n(2n+1)}{2} \equiv n \pmod {2n}\),所以只要取反就好了。
G
有點像網絡流,而且網格圖是二分圖然后看起來挺可做的。
然而問題是要么左右能流要么上下能流,一看就不是很好限制。
正解是把網格圖的邊看成網絡流中的點,網格圖的邊也是一個二分圖,限制轉化為兩種邊不能同時選,這個玩意就是個二分圖獨立集。
所以跑個網絡流就行了。