NOIP 2018 游記


寫在前面

初賽成績 90,沒有懸念地進了復賽。

由於去年已經參加過一次 NOIP,並且也拿到了一等獎,所以今年內心的壓力也不會特別大吧。

考試前一天的上午寫了一下平衡樹。我感覺每次寫平衡樹我的板子都要改進一下。不知道會不會考到呢?

11.10 (Day 1)

8:30 准時開考,拿到題之后順序開。

看了 T1 我傻了。居然是積木大賽原題?NOIP:我考我自己。不管了直接碼碼碼,然后過了大樣例就把 T1 扔了。

看了 T2 第一反應是小凱的疑惑加強版?簡單推了一下發現若一個數可以表示成若干個比它小的數的和,那么這個數就是沒用的,可以刪去。所以現在的問題是怎么判斷一個數能否被比它小的數表示出來。看了一下數據范圍,最大數據的 \(n = 100, a_i = 25000, T = 20\)\(O(\max \{a_i\} \times Tn)\) 的復雜度可過,於是直接排序后做完全背包就完了,寫完也一遍過了大樣例。

此時時間是 8:41,前兩個題幾乎沒怎么花時間,所以剩下的時間很充裕,因此覺得自己應該能把 T3 也寫出來。

T3 剛讀完題之后沒啥思路。不過二分模型比較顯然,二分完長度 \(w\) 之后的任務就是從樹上找出盡可能多條長度不小於 \(w\) 的路徑。此時突然想到最近在 CF 上做了一個類似的樹上找路徑條數最值的題,那道題可以用貪心。於是想一下這個題能不能也貪心。發現可以記錄每個點返回到父結點的路徑長度,那么對於每個結點,盡可能多地合並子結點路徑,最后再取剩下的最長的作為返回到父親的長度即可。這一操作可以用 multiset 實現,那么總時間復雜度就是 \(O(n \log n \log w)\) 的,最大數據 \(n = 50000\),可過。寫寫調調后一遍過了三個樣例。

后面自己又出了一組 \(n = 50000\) 的菊花圖,在 Linux 下測一下時間,發現跑了 1s 多一點,過不了。於是又卡了卡常,修改了一下二分上界,卡進了 0.7s。

此時還剩兩小時左右。我依然不太確定我 T3 的做法是否正確,於是又推了一下貪心的正確性。最后檢查一下文件名之類的東西就等着考試結束了。

考完下來,和其他同學交流。fwat T3 也寫的兩個 \(\log\) 的貪心,我心里才覺得穩了一點。他今天應該也是 AK 了,其他同學好像多多少少都掛了點分。

后面聽說今天考了三個原題也真是無語。

下午默寫代碼后在 luogu 上評測,很高興的是,我和 fwat 都沒有掛分,都拿到了 300。

不過其實今天幾乎都是 255+,並沒有多大區分度。因此希望明天也能考好吧。

11.11 (Day 2)

畫風清奇的一天。

T1 讀題就讀了許久。並且由於題讀錯了,我甚至還覺得樣例有問題,於是向監考老師求助,然而得到的答復是不予回答......

無奈只好先看 T2。T2 看完題后很 naive 地以為只需按列依次考慮,保證一個格子的下邊格子的值大於等於右邊格子就好了,於是直接寫了個矩陣快速冪,結果死在了第二個樣例。確保不是程序寫錯后,又推敲了一下自己的做法,突然想到存在交叉的路徑可能在之前完全相同,此時一個格子的下邊格子的值必須和右邊格子的值相同,這一點是不能直接體現在狀態中的。於是只好放棄了這個錯誤的做法。

此時已經開考了 40 分鍾了,我一分都還沒有拿到,心里開始慌了起來。

又不甘心地回頭看了看 T1,再次讀題確保題意,然而我還是沒看出我的理解有什么問題。此時我再次找監考老師確認題意,監考老師說可以向上面反映一下。過了一會兒,我得到的答復是:題意沒有問題。

我這下真的慌了。開考已經一小時了,我是真的一分都沒有拿到。但是 T1 我絕不能不寫,於是我對着樣例猜了個題意,猜要求的是最小的 dfs 序,然后寫了個 \(O(n^2)\) 暴力刪邊+遍歷。令人驚喜地是,居然過了所有的樣例。我慶幸自己猜的題意應該是對的。

此時時間大約是 9:40。我還是准備再看看 T2,看有沒有什么突破。然而我想出的狀態總是多多少少有些問題。無奈最后決定打暴力。由於最開始想的矩乘的做法對於 \(n = 2\) 的數據是沒有問題的,因此我直接保留了下來,然后寫了份暴搜處理小數據,再用暴搜和矩乘拍了一下,確保無誤。這樣這個題一共能得 50 分。

寫完 T2 部分分我還是不太甘心,於是又想了一會兒,但還是無果。此時已經快 11:00 了,我不能再拖了,於是趕快扔掉 T2,看 T3。

T3 讀完題之后一眼動態 dp。然而學習動態 dp 已經是四個月前的事情了,並且當時也只是粗略地看了一下,細節什么的也忘了,感覺自己考場上最后一小時推+寫出來不太現實,所以直接寫了 \(O(nm)\) 的暴力 dp。這樣今天的總分估計是 100+50+44=194。

還剩半小時,想再拿點分上 200。此時突然看到 T3 中間有兩組樹深度較小的數據,發現由於每次修改只會影響兩條鏈的 dp 數組,所以深度較小時可以直接暴跳父親結點修改 dp 值。於是趕快改了改,拿到了這額外的 8 分,這樣總分就有 202 了。還剩最后幾分鍾,又檢查了下文件名,確認無誤后等待考試結束。

感覺今天弱爆了......當然還是自己菜。

出考場后感覺似乎今天很多同學還是沒考好。於是只能默默祈禱,也祝我自己不要掛分。

下午還是默寫代碼然后在 luogu 上測評,還好的確沒有掛分(T2 居然還多過了一個點)。

感覺 T2 全世界都打了表找了規律就我沒打表......

這樣,兩天的總估分就是 300+202=502,但願這次的 NOIP 最后能以我期待的分數收官吧。

11.20

出成績日。

最后成績果然和我預估的一模一樣,502 分,因此沒有什么情緒上的波動。

不過很多同學的最終成績都和預估或者自測成績有多多少少的出入。算是幾家歡喜幾家愁吧。

后記

對於一同考試的部分同學來說,這是他們的最后一戰,是滿意還是遺憾,都已經過去了。

然而這對我來說並不是結束,還有半年多的時間需要努力,NOIP 暴露出的問題也應該要及時彌補。

加油吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM