NOIP2024模擬1
掉大分,哈哈哈。
好像有的人對比賽評價不太好,我覺得還行,除了 \(4\) 個小時 \(5\) 道題以外。
wang54321:主要是我打的比較唐。
還有經典沒 \(SPJ\) ,但後交的竟然有?
-
T1 分糖果
簽到題。
但沒簽成。考慮對 \(3\) 取餘,只有四種合法 \(0,0,0|1,1,1|2,2,2|0,1,2\)
考慮 \(3\) 個 \(0,1,2\) 可以拆成 \(0,0,0|1,1,1|2,2,2\),所以直接列舉有幾個 \(0,1,2\) 即可。
幾個經典錯解的 \(hack\):
優先 \(0,1,2\):
7 3 1 1 1 2 2 2
優先 \(1,1,1\) 等:
8 3 3 1 1 1 2 2 2
-
T2 乒乓球
碼農題。
發現顯然有迴圈節。
發現就算特判了永遠不會結束的情況,也可能會追到很高的分。
考慮追分以後真正的分值已經沒有意義,直接記錄差值即可。
預處理出經過一輪後每個狀態的下一個狀態和 \(A,B\) 各贏幾次,在找迴圈節做即可。
細節不少,大師有一種好寫的做法,就是直接暴力跳,只有在有人贏時才判一下是否已經在這裡贏過了來找迴圈節。
看似可以卡到 \(k^2\),但考慮在同一位置的同一狀態一定會有同一贏點,所以和上面做法複雜度相同。
-
T3 與或
結論題。
發現對於任何情況,將
&
放在|
前一定更優。可以先前面全是
|
,後面全是&
求理論最大值。但是要保證字典許最小,所以考慮將
|
前提。挨個位置考慮,如果放
|
後後續最大值依然和理論最大值相等就可以放|
。求後續最大值可以按位貪心,也可以 \(ST\) 表維護區間
&
加預處理字尾|
(雖然&
|
之間沒有結合律,但各自都滿足結合律,將他們的一個符號前提即可)。 -
T4 跳舞
\(DP\) 題。
考慮 \(dp_i\) 表示到 \(i\) 並且 \(i\) 還活著的最大貢獻。
發現轉移需要知道是否可以消除 \([l+1,r-1]\) 一段並且 \(l,r\) 還活著。
考慮用 \(DP\) 區間 \(dp\) 預處理,設 \(g_{l,r}\) 表示從是否可以消除 \([l+1,r-1]\) 一段並且 \(l,r\) 還活著,顯然轉移。
透過預處理 \(\gcd\) 可以做到 \(O(n^2\log n)+O(n^3)+O(n^2)\) 的。
-
T5 音樂播放器
\(DP+\) 結論題。
首先我們知道,當聽了 \(i\) 首歌后聽任意一首新歌的機率都是 \(\frac{1}{n-i}\)
考慮其和排列類似,所以聽 \(i\) 首歌的所有情況是等機率的。
考慮 \(dp_{i,j,k}\) 表示前 \(i\) 首歌聽了 \(j\) 首,總愉悅程度為 \(k\)。
則 \(x\) 的答案為沒聽第 \(x\) 首的合法(加上其可以超過 \(S\))方案數乘上排列產生的係數除掉總數。
直接轉移對於每個 \(x\) 都是 \(O(n^2S)\) 的,總複雜度 \(O(n^3S)\)。
考慮提前將所有都轉移了,每次在減掉 \(x\) 貢獻可做 \(O(n^2S)\)。