# $\text{2019 NHSPC}$ 全國模擬賽 心得 [題目](https://brian.su/r/pre-nhspc2019-problems) $\mathcal{AND}$ [記分板](https://ranking.brian.su) $\mathcal{AND}$ [題解](https://hackmd.io/@briansu/BkAdtSP6B) 感謝籌備組的大家舉辦了這麼好的比賽 :heart: 先來說說結果吧:$\text{Rank 10/77, 3AC, 442.59/800}$ --- 開場時按照之前定下的策略不從 $\texttt{pA}$ 開始,反而從 $\texttt{pD}$ 或 $\texttt{pE}$ 開始看,看到 $\texttt{pE}$ 叫做 AI-777 就嚇到了w,直接改成從 $\texttt{pD}$ 開始看。 $\texttt{pD}$ 是個互動題,看的出來是用二分搜做,不過賽前給自己的 SOP 是先拿部份分再去想滿分解,特別是這種容易錯的題目,就先交了暴力的 $14$ 分跟其中一維二分搜的 $34$ 分。在拿到 $48$ 分之後,把 $\texttt{subtask 2}$ 的作法直接搬到 $\texttt{subtask 3}$ 裡面,當時腦袋炸裂算不出來二分搜的次數還以為可以拿滿= =,最後只有 $54$ 分才發現詢問的次數比自己想的還多一倍。 - $\text{50 min passed, scored 54/800.}$ 這時候已經過了 $50$ 分鐘,我卻還只有 $54$ 分,於是從這個時候開始就先做 $\texttt{pA}$, $\texttt{pB}$。 $\texttt{pA}$ 看到的時候想說應該是梗題,自己手算一下發現如果有 $a_{i,j}=a_{i+1,j-1}$ 就可以構造出一條路徑ww,$\texttt{pB}$ 看以來就是MST的裸題?總之交上去就都過了。這時已經過去 $68$ 分鐘,拿到了 $254$ 分。一邊想說這種進度太慢了一邊開 $\texttt{pC}$,結果發現自己想不到怎樣會有最佳解,慘。= = $\texttt{pC}$ 先直接交了全輸出 $1$ 的程式拿了 $\texttt{subtask 2}$ 的一半分數,又跑回去看 $\texttt{pE}$,並把 $K=0$ 的子題拿了。 - $\text{90 min passed, scored 282/800.}$ 又滾回去看 $\texttt{pC}$,並把 $\texttt{subtask 1&3}$ 用暴力把詢問為 $0$ 的區間做出來,寫著寫著就想到全部直接暴力 $\text{AND}$ 一定是合法解,丟上去 $\mathcal{O}(NQ) \approx 10^{10}$ 竟然拿到了 $40.5$ 分ww,本來已經做好準備全部 $\texttt{TLE}$ 的說ww 順便把 $\texttt{subtask 1}$ 的 $\mathcal{O}(2^N)$ 枚舉寫出來,又拿了 $8.5$ 分,認為自己已經沒救了,於是就往後去看 $\texttt{pF}$。 - $\text{124 min passed, scored 318/800.}$ 看到 $\texttt{pF}$ 的題敘跟子題限制和配分,我瞬間感覺世界又亮了起來,並下定決心一定要拿到這 $57$ 分。其實做也很簡單,$\texttt{subtask 1}$ 是先 sort 完再 2-pointer,$\texttt{subtask 2}$,因為重量只有 $200$ 種,直接用個陣列存下來,每次修改再用 $\mathcal{O}(200)$ 查詢。 看完 $\texttt{pG}$ 完全沒想法,跟去年的題目一樣qaq,難道其實 $\texttt{pG}$ 才是最難拿分的題目? $\texttt{pH}$ 也照往常只想的到 $\texttt{subtask 1}$ 的暴力,雖然題目有部份測資要求在線,但蒟蒻如我也想不到有什麼離線的解法,便撈完 $10$ 分就放棄了。 - $\text{180 min passed, scored 385/800.}$ 我在賽中預測的分數線長這樣: - TOP3. 580+ - TOP10. 460+ - TOP20. 375+ - TOP1/2 200+ 雖然已經(應該)有三等獎了,但我覺得剩下的題目我都做不出來,只能慢慢等別人超越,半放棄般的重新審視題目,並決定應該放棄 $\texttt{pF, pG, pH}$。 接下來的一個小時都在鑽研 $\texttt{pC}$ 跟 $\texttt{pD}$,$\texttt{pD}$ 寫累了就去看看 $\texttt{pC}$。看配分可以發現最佳解只需要詢問 $60$ 次,也就是對其中兩邊二分搜,而我目前的作法是對四邊都二分搜,加上詢問面積總共 $121$ 次。在調整輸出時又思考到其實可以刪掉其中一邊的詢問,改用另一邊的長跟面積求出來,詢問次數可以降低到 $91$ 次。 想 $\texttt{pC}$ 的 $\texttt{subtask 2}$ 的時候發現其實就是常見的工作排程問題。 > 取最少的點使每個線段都至少覆蓋一個點 按右界排序放 $1$,再跟之前的暴力綜合下去,終於取得了分數上的進展。 - $\text{240 min passed, scored 404.59/800.}$ 看著 $\texttt{pC}$ 的 $\texttt{subtask 3}$ 想到了一個極度麻煩的做法,先把所有必須是 $0$ 的點清掉,剩下的再去做工作排程。寫著寫著就想到其實正解應該就是重複做 $30$ 次所有的東西? 於是 $\texttt{pC}$ 就被我分成四個部份: 1. 對每個 bit 單獨判斷 2. 用差分+前綴和統計必須放 $0$ 的區間 3. 從前往後跟從後往前 $\mathcal{O}(N)$ 計算詢問需要改變到哪裡 4. 做排程並將答案 $\text{OR}$ 上 $2^i$ 於是就開心 $\texttt{AC}$ 囉! - $\text{262 min passed, scored 442.59/800.}$ 剩下時間在用暴力思考 $\texttt{pE}$,想當然爾,已經做了四個半小時,精神不濟的我也沒辦法 de 出任何 bug 來owo - $\text{Contest Ended, scored 442.59/800, Rank 10/77}$ --- 最後看記分板的時候超緊張又刺激的,我先按 `pgdn` 滾到最下面才一個一個往上滑,看到 $20$ 名左右的分數突然從 $322$ 飆到 $377$,在往上看到第 $15$ 名 $392$,第 $14$ 名 $418$,第 $13$ 名 $432$,第 $12$ 名 $433$,第 $11$ 名 $437$,然後我在第 $10$ 名,超開心der 贏過了好多大神,也見識了劉澈超電的實力,國中就能拿到第 $8$ 名,到時候的選訓營一定能見到面吧~ --- 事後看題解的感想: $\texttt{pA, pB, pC}$ 果然是這樣做呢ww $\texttt{pD}$ 求長跟寬明明可以詢問一次就好,我為什麼要二分搜找 $a$ qaq $\texttt{pE}$ dp 式意外的超簡單,只不過賽中完全沒想過是 dp,看來是被前年的 AI-666 影響到了 $\texttt{pF}$ 用數據結構維護 $\texttt{subtask 2}$ 的作法可以到 $\mathcal{O}(Q \lg N)$,不過我還是沒想到? $\texttt{pG}$ 蒟蒻如我仍然看不懂題解 $\texttt{pH}$ 竟然可以把詢問 $(l, r, L, R)$ 拆成 $(1, r, 1, R) - (1, r, 1, L-1) - (1, l-1, 1, R) + (1, l-1, 1, L-1)$ 來做莫隊,這個想法太精湛了吧 :astonished: --- 事後看別人心得文的感想: 到底為什麼品翔可以騙到 $\texttt{pG}$ 的 $45$ 分啦,把度數為 $1$ 的點拆掉再輸出所有度數 $\ge 4$ 的點是怎樣ww $\color{purple}{\text{joylintp}}$ 有錄 screencast 喔,想去看的可以到 [他的 youtube](https://youtu.be/KNHQ9yw4Vc8) 觀看 還有紅黑大電神 $\text{t}\color{red}{\text{mwilliamlin168}}$ 的 screencast 喔 [去膜拜吧](https://www.facebook.com/tmwilliamlin168/posts/1045219255817229) --- ![](https://i.imgur.com/2KOGFTo.png) ###### tags: `心得`