---
# System prepended metadata

title: '$\text{2019 NHSPC}$ 全國模擬賽 心得'
tags: [心得]

---

# $\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: `心得`