SCOI 2019 游記


寫在前面

其實冬令營之后就有一些想說的內容,由於心情原因沒有寫出來。PKUWC 失誤頻頻,唯一可能還有點價值的就是 Day2T3 計算幾何推了 76 分出來。NOIWC 更是無心再談,感覺是被提答送走遠了。不過歸根結底還是自己的問題。

轉眼間快三個月過去了,期間一直在廣泛做題,也學了一些新的算法。有沒有成效,就在省選考場上驗證吧。希望不要再向去年那樣頹廢了。

筆試面試差評。

4.12 (Day 0)

下午筆試。

100 道單選題幾分鍾就寫完了,當然還是喜聞樂見地出了一些小鍋。一些經典的鍋見知乎 如何評價 SCOI2019,這里就不再贅述了。

4.13 (Day 1)

拿到題之后打算順序開。

看完 T1 瞬間整個人都不好了。為什么一來 T1 就感覺不可做啊?於是先打了個 30 分的模擬。正准備棄療的時候突然發現第二檔部分分也滿足 \(M \leq 10\),於是簡單改了下,寫了個lower_bound,這樣應該就有 50 分了。

這時 T1 暫時沒有更好的想法。時間還比較多,於是我把 T2 和 T3 都瀏覽了一遍。發現 T3 好像是個數學題,似乎可以推一推,於是准備優先寫 T3。不過在這之前,我得先看一下 T2 好不好拿分。

結果看完 T2 后只胡了一個高復雜度的做法,而 \(q\) 的數據范圍出到了 \(10^6\),瞬間就自閉了,不過這種做法說不定能騙點分。然而因為並不想優先開這個題,於是先打了個 20 的暴力就跑路去看 T3 了,決定等有時間再來寫 T2 的部分分。

T3 推了一下,一個顯然的想法是設 \(f_{i, j}\) 表示超矩形的前 \(i\) 維坐標乘積(即 \(\prod_\limits{x = 1}^i a_x\))為 \(j\) 時所有 \(\prod_\limits{x = 1}^i a_x^{b_x}\)的和,轉移為 \(f_{i, j} = \sum_\limits{d |j} f_{i - 1, d} \times \left(\frac{j}{d}\right)^{b_i}\),發現轉移是狄利克雷卷積的形式,因此最終要求的 \(f_k\) 即為 \(k\) 個形如 \(g(x) = x^{b_i}\) 的函數的狄利克雷卷積。想了下發現由於許多 \(b_i\) 是相同的,並且 \(b_i\) 的種類數不超過 \(5\),因此可以將函數按 \(b_i\) 分組,單組內倍增,最后再合並。根據杜教篩的那套理論,可以只存所有函數的 \(O(\sqrt n)\) 個前綴和值,再構造一下杜教篩就可以較快地做單次合並卷積了。感覺應該跑得很快,於是准備試着寫一寫。寫寫調調了很久后過了樣例,嘗試着造了一組最大數據跑一下,結果要 10s 才能跑出來。又想了許久,想不出更好的做法了。我決定檢查下我的寫法或是卡卡常數。

此時我就走上了一條不歸路。當時的我早已將 T1 拋在腦后,僅僅在 T2 和 T3 中抉擇了一下,認為卡過 T3 會現實一點,並且更容易得分,於是整場考試的后半部分我一直在卡 T3。結果我並沒有成功。當考試結束時,最大數據還是需要 6s 才能跑出來。

最終我 T3 的得分僅有 50,這和 30 分的暴力僅有 20 分的差距。這值得嗎?我不得而知。

update:今天用 min_25 篩寫了一發 T3 發現 0.2s 都不到就跑出來了?自閉了。

於是 Day1 我的分數並不高,僅有 50+20+50=120。

出了考場就聽說 T1 可以找規律,再一次自閉了。下午果然看到了 T1 一大片的 100 分。

當天下午我的心情一直很沉重,於是面試也不太想說話,這導致我面試成績也不算太高。因為心情原因,晚上也不太想吃東西,我只希望明天能發揮好一點。

4.14 (Day 2)

拿到題之后還是打算順序開。

T1 讀了兩遍冗長且花里胡哨的題目描述后終於清楚了題意,很快就胡了一個單次詢問 \(O(n)\) 的最大連續和做法。想了一會發現從最大連續和的角度考慮似乎不好做,於是把叉積式子拆開,發現答案式子就是兩個前綴和的點與詢問點的叉積相減,只需讓前面的叉積盡可能大,后面的叉積盡可能小。於是求出所有前綴和點構成的凸包,再把所有直線按極角排序后直接寫個類似於旋轉卡殼的東西求離直線的最遠點似乎就做完了,除了求凸包和直線排序之外復雜度都是線性的。很快地寫完后和暴力連續最大和拍了一下,沒問題后測了組大數據,發現讀入有點慢,於是加了個讀入優化就跑得飛快了。

這時我的心情稍微放松了一點,打算還是先瀏覽一遍 T2 和 T3。

結果發現兩道題似乎都不太可做,於是我又開始慌了。T2 的 \(n\) 的數據范圍不超過 \(2000\),似乎有可以想一想的空間,於是決定先看 T2。

T2 想了很久枚舉中間的合法點 \(x\) 然后遍歷一遍,再套個容斥之類的東西的做法,結果因為限制太多,無果。不過可以發現對於單個合法的點集對 \((U, V)\),所有合法的點 \(x\) 一定構成一個連通塊,即一棵樹。此時突然想到了今年 PKUWC 上關於樹的計數的小 trick,發現好像以每個綠色點作為合法點遍歷一遍求出所有答案的和,再以每條兩段都是綠色點的邊作為合法邊遍歷一遍求出所有答案的和,兩者相減即可讓每一個合法的點集對 \((U, V)\) 唯一出現。這樣復雜度剛好是 \(O(n^2)\)。想到這十分激動,於是趕快按照想法敲了份代碼,結果卻打死過不去大樣例。此時已經 11:00 左右了,為了節約時間,我決定肉眼調試,然而看了幾遍並沒看出問題。無奈只好又寫了份暴搜,小數據拍出了問題后,發現結果是一個 SB 錯誤,改了后終於過了大樣例。

update:聽說這個 T2 是 [十二省聯考2019]希望 那題的弱化版。服了。

我長舒了一口氣,現在預計已經拿到了 200 分,但感覺今天大眾分應該也會很高。於是為了防止掛分,我並沒有急着去看 T3,而是又拍了一下兩個題,然后造了點最大數據,在 Linux 下測了下時間和空間。測試無誤后,我的心情放松了許多。

T3 被題意嚇到了,於是打了個 20 的暴力時間就差不多到了。

剛出考場,就聽見許多人互相交流分數。我聽到了許多的 240,突然反應過來 T3 的 \(W = 0\) 的部分似乎寫個線性基就可以了,於是又白丟了 20。我甚至聽見了 270 分的聲音,心里有點慌。

下午出分,還好我沒有掛分,拿到了 100+100+20=220,這個分的排名在今天似乎比較靠前。正式營員今天的最高分是 240,不過聽說非正式營員里倒是出了 270 的神仙。

我簡單算了一下,自己應該是在省隊線內了,本來這是一件令人高興的事情,然而我卻並沒有表現出太多的喜悅,相反,我總感覺有些失落徘徊在我的內心,是壓力所迫,也可能是失誤所致。觀物知情,相信灰色格調的實驗樓內景也在應和我的感受。

在離開時,總榜還未公布,但也沒有太多值得期待的了。

后記

省選雖然已結束,但在之后短暫的三個月內,各項考試將會接踵而至,希望自己都能夠全力以赴。

加油吧。


免責聲明!

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



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