[2024.11.23]NOIP2024模擬賽

Redamancy_Lydic發表於2024-11-23

又廢了。

沒開 T3,所以賽後需要重新寫。

賽時

T1 第一眼捕捉到字典序,同時還注意到了哈密頓路徑。

資料範圍很小,所以考慮列舉填充次序,每次找到最優的填充。

把以前已經填過的元素標記。對於當前的這次填充,它能填在這裡需要滿足後面最優的填充方式與之前填充代價的和需要滿足條件。

不放先按照顏色排序,這樣可以方便地遇到第一個合法元素就處理。

根據題目條件,當前及以後最優的代價可以得出是 \(\min(當前_x-x_{min},x_{max}-當前_x)+x_{max}-x_{min}\)。然後就可以找了。

去看 T2,先把暴力的寫了。我用的是二分寫法,所以一直往二分那方面想,最終也沒有什麼新進展。

T3 是個大模擬。一開始以為正常模擬即可,但是推了推發現題目上一中牌面會有很多種不同的組合方式,導致感覺複雜度是指數級別的,而且我不會打麻將所以打算先放一放。

去看 T4,看上去兩種操作都很有特點。

先把 10pts 的純暴力寫了,然後考慮如何使整次操作的複雜度達到 \(\mathcal{O}(q)\)

發現對於每一個元素,先特判掉未進行操作以的情況,那麼它最後的值一定是在它最後一次操作一之後最大的那次操作二。於是可以以操作時間為下標建立一個支援查詢區間最大值的資料結構。由於不需要修改,所以可以用 ST 表實現。

去看性質,第一個性質想了想發現只會對一個元素的貢獻產生影響。所以可以把每個元素的操作一的時間用 set 存下來,每次刪除這次操作後重新計算它的貢獻,更新總答案即可。

寫完以後還剩 40min,感覺現在開 T3 可能也寫不出來,所以去看 T2。

想了想發現匹配長度一定存在迴圈節,所以只需要找到這個迴圈節,用陣列存下來,每次對迴圈節長度取模後輸出對應值就可以了。

此時還剩 20min,寫了一會發現我不會找匹配長度的迴圈節,所以就擺了。

賽後

T2,T3都過了一車,所以我 T4 建立的 40pts 優勢蕩然無存,成功倒數。

T2 聽了 PSM 的講解感覺賽時腦子糊塗了,很快就訂了。

T3 後來想了想發現可以列舉補充的牌,按照這種思路計算是否合法,待會去補(補不完不讓走)

希望 RP 守恆。

相關文章