寫在前面
初賽成績 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 暴露出的問題也應該要及時彌補。
加油吧。