1. 程式人生 > 其它 >February Challenge 2021 Division 1 選做

February Challenge 2021 Division 1 選做

February Challenge 2021 Division 1

Prime Game

結論:設前 \(Y+1\) 個小的質數的乘積是 \(P\),若 \(P|N\),那麼先手勝,否則後手勝。

只需要考慮證明:從\(P|N\) 改一次一定到不整除的狀態,從不整除的狀態改一次可以到整除的狀態,而 \(0\) 是整除的。"一定"顯然,“可以”是因為我們選的是 \(y+1\) 個最小的質數,所以 \(N\%P<P\),一定可以表示為 \(<=y\) 個質數冪次的乘積。

XOR Sums

考慮計算 \(|S|=k\) 的答案,是卷積的形式,\(NTT/FFT\) 搞一搞。

Multiple Games

根據 \(A_1+A_i\ge A_{i+1}\) 的性質,可以發現,在某局遊戲中先手勝當且僅當 \(M\%(A_l+A_r)\ge A_l\)。那麼對 \(A_l+A_r\) 進行常規的根號分治。

Bash Matrix

基本的觀察:對於最後停在起點位置的 \((i,j)\),一定在一個環中;否則,假設它停在 \((x,y)\),那麼一定是先走到 \((x,y)\),然後繞了一圈 \((x,y)\) 所在的環。

更進一步:所有環都是偶環,我們可以把一個大環拆成若干個長度為 \(2\) 的小環,答案不會更劣(這樣選擇更多)。對於不在環上的,從 \((i,j)\)\((x,y)\) 路徑上的點應該都停在 \((x,y)\)

對於不在環上的部分,可以通過從在環上的 \((x,y)\) 開始跑最小樹形圖來確定答案。對於在環上的,將整個網格黑白染色,黑色的環上點放在左邊,白的放在右邊,然後跑一遍費用流即可。

Dream and the Multiverse

先用莫隊轉化為詢問 \([1,i]\) 內有多少點能到 \(x\)\(x\) 能到 \([1,i]\) 中的多少點,把這些詢問二次離線。如果就一棵樹,顯然可以弄到dfs序上用資料結構解決,\(O(n)\) 次修改,\(O(n\sqrt{n})\) 次詢問。多了 \(m\) 條邊後也類似,變為 \(O(nm)\) 次修改,\(O(n\sqrt{n})\) 次詢問。用普通線段樹和普通的分塊顯然都不行。經過嚴密分析,使用 \(n^{1/3}\)

叉的線段樹可以高效解決。