北大集訓2019游記


Day 0

去中關新園報到,見到了zyy,cf,lbt等各路神犇。

去北大機房試機,感覺北大的機子比NOI的機子好用多了。

發現來北京,我需要適應熱帶沙漠氣候和溫帶季風氣候的快速轉換,有點難受。

Day 1

上午去考試。先讀一遍題面,感覺T1應該是比較好像但是特別繁瑣的題,T3是很難的題,T2不知道。仔細地想了想每道題,發現T2轉換幾步之后,和我見過的另一道題思路是差不多的。而這個T2,只需要在那個題基礎上套一個二分答案再套一個后綴自動機 + parent樹上dfs + 差分數組。

於是我先寫T2去了,實現總用時大概為1h。調調調,終於調過了樣例。一交就WA。對拍對拍,調調調,發現我后綴自動機有個變量名寫錯了(這都能過樣例的嗎???),改了交上去,獲得了60分的好成績。

我開始卡這題的常數,加了些奇怪的剪枝,發現跑了8.8s(時限8s)。然后把后綴自動機的轉移邊用數組而不是map存儲,直接過了???開始覺察到這題的毒瘤之處了。

接着開T1,推了好久把T1的樹形dp轉移式子寫出來了。然后開始實現,總用時大概為1.5h。測樣例,發現樹形dp的狀態都有問題了。開始一通狂改,把狀態改對了,把轉移式子改對了。重新實現,通過了題目所給的兩個樣例。提交發現WA成0分。

此時離比賽結束還剩15min。我趕快rush了一個T3的3分暴力和T1的8分暴力,發現T1仍然0分,而T3只是多了3分。

我的得分: 0 + 100 + 3
我的排名: rk29

下午聽講題,發現我T1,T2好像都是正解,T3這題需要用到帶花樹算法,無人AC。

在賓館里跟南外的xy巨佬調試今天的T1,發現我和他的代碼里面好像都犯了一個小錯誤,導致爆零。哎,IOI賽制都能掛分,還直接掛100分。

Day 2

上午去考試,看到T1,發現這不就是一個DFT的基本運用嗎?過了45min,實現 + 調試完畢,一遍AC。

看到T2感覺很迷,先搞T3吧。發現這個題去掉數據結構的話是個樹上高消的經典題。所以難道是鏈修改,維護動態樹上高消dp?但是ddp我寫不動,就想着再推點式子,找更妙的做法。推着推着,發現竟然可以直接把答案寫出來?(使用了一點高中數列求通項常見技巧)。然后發現這題竟然是直接LCA + 前綴和就好了。

吸取昨天的教訓,我並沒有急着寫正解,先提交了個20分暴力驗證了一下我結論的正確性,再把正解實現了出來。此時比賽進行了2h,我已經獲得了200分。

接着想T2,想着想着,我發現一個驚人的事實:考場竟然變空盪了!又想着想着,發現這題實際上是某道集訓隊作業的類似題,是k-正則二部圖必有邊的k染色這個結論的擴展。你只需要隨便搞一個網絡流,每次求二分圖最大匹配即可AC。用余光環顧四周,發現又有幾個位置空了出來。趕快實現這個算法,一遍AC!此時離比賽結束還有1個多小時。

過了一會,覺得沒事干,提前離場了,此時似乎已經有20個人提前離場了。

本場得分:100 + 100 + 100
目前排名:rk18

下午聽講題,發現這個T3出題人的做法竟然沒有我的做法復雜度優秀,感覺有點迷啊。

晚上我和lbt,hzk,xy等人在討論明后兩天有沒有交互題,造計算機題之類的題,感覺要是真的出了我就掉出前20了。

Day 3

先看題,看到這場題有一道計算幾何,一道奇怪的題(和某IMO題的操作完全一樣)和一道交互題,感覺自己要涼了。

T2的題意如下:

給定圓環上的\(n\)個整數\(a_0, a_1, ..., a_{n - 1}\)(\(n \ge 3\))。每次選取圓環上的數\(x\),設與它相鄰的兩個數為\(y,z\),那么把\((y, x, z)\)變成\((y + x, -x, z + x)\),求把圓環上所有數變成非負數的最小操作次數(無法操作時輸出-1)。

而那道IMO題是\(n = 5\),\(\sum_{i = 0}^{4} a_i > 0\)時,求證只要是不斷對負數操作,總有一刻使得最終所有數全部變非負數。

先想T1,驚奇地發現這題並不是那種我不會的計算幾何題。你只要找一個結論,然后很快就寫完了。

我在45min左右就搞定了這題,然后開始輪番想T2和T3。掛機了大概2h,想出了T3的一個似乎是正解的東西,需要用到隨機化。開始實現T3,交上去發現我的做法被卡成30了。再優化了一點常數,發現變成了55分。

奇怪地是,這份代碼過了subtask 1,2,4,卻沒有過subtask 3。那好,我就多提交幾遍,看來它只是rp不好,沒有過subtask 3。

結果發現,這份代碼有一定概率獲得10分(subtask 1),一定概率獲得30分(subtask 1,2),一定概率獲得50分(subtask 1,2,3),一定概率獲得55分(subtask 1,2,4)。

我暫時放棄了這道題的卡常,轉而想T2。我先寫了一個亂搞:每次找到環上最小的數,對它操作,然后如果過了很多次它還是沒有變成全部非負,就輸出-1。交上去竟然獲得了30分。我猜了一下答案為-1的充要條件,交上去還是30分。我想着用數據結構維護這個貪心,發現根本維護不出來。

此時時間已經不夠了,我做了一個決定:反復提交T3的代碼,把這道題的最大提交次數用滿,以獲得75分(subtask 1,2,3,4)。

然而我的rp並沒有那么好,它仍然只能獲得55分的成績。

本場得分:100 + 30 + 55
目前排名:rk15

下午聽講題,發覺T2,T3正解都是很妙的東西。晚上我被各路穩進前15的神犇奶了,再加上自己心里的緊張,直接為我明天的爆炸埋下伏筆。

Day 4

上午先看題,發現沒有交互和提答。T1是一道計數題,T2是一道奇怪的數學題,T3是一道最優化題。

先想T1,發現這題並不難。在1h之內我通過了T1。

再想T2,自閉了快1h才找到這題的一個真算法(指數級別的暴力)。我實現了它,打了個表。大約15分鍾它跑出來了\(n = 2,3,4,5,6,7,8,9,10\)的結果(本題基本上是只輸入一個正整數\(n\)(\(n > 1\))的題)。把表交上去,它獲得了35分(\(n \leq 10\))的暴力分

開始對着這\(9\)個數瘋狂找規律,然而並沒有找到通項公式,也沒有找到遞推公式。

又試圖壓狀態推dp,然而並沒有推出來一個多項式做法。

對着這題自閉了很久,我才開始想T3。先實現了這題的一個18分費用流暴力,過了subtask 1,2。再要看題的時候,發現:

又過了大概15min,老師通知全場選手獲得一定的加時。這時我才能重新看到題目。對着subtask 4想了一個線段樹維護貪心,實現了一下,自己手測了幾組數據,似乎能過。

4h 30min左右,老師通知本場比賽有可能變成OI賽制,建議大家對拍。我就開始拿我subtask 4的貪心和費用流做法對拍,結果直接WA了!

我瞬間變得不知所措了起來,瘋狂想着這題的其它亂搞貪心。

既然我前面是從左往右貪心,我現在就從右往左貪!

改!改!改!這個線段樹維護的東西要再加幾個。改pushup函數,加一個詢問函數!再在主函數里面寫個貪心!

4h45min:subtask4的貪心搞定了,此時大樣例下發,本場比賽變為OI賽制。

測試subtask4的樣例,一遍通過!

4h48min:subtask 4的貪心可以推廣!怎么用數據結構維護?算了別想了,快rush出來!

4h53min:實現完畢,通過小樣例,WA了大樣例!

4h55min:OJ感人地修好了!提交34分代碼。

4h56min:34分到手!

4h57min:變量名打錯了,改!測大樣例,通過!

4h58min:提交71分代碼。要是寫掛了就完蛋了!

4h59min - 5h:返回了71分的結果。

總之這場打的真的是驚心動魄。然而,T3的71分挽回不了被卡T2的失誤。本場排名為22名。

本場得分:100 + 35 + 71
最終排名:rk19

下午聽講題,發現T2的正解竟然是\(n \leq 10\)打表,\(n \ge 11\)輸出0?我離T3的正解的確就差一個數據結構了,然而卡了很久的T2,也沒有時間想了。

后記

如果我D1T1調出來了,如果我發現了D4T2的結論,如果我把D3T3卡過去了,我都會擠進前15。然而,我並不能祈求有這么好的運氣。在我前面的人都是我所認識的大名鼎鼎的神仙,我完全不敢說:我比他們強。

現在我的最后一戰是WC,不求翻進前15,只求我的結果配得上我的付出吧!

UPD: WC和CTS合並了,我可是能參加CTS的人,厲害吧


免責聲明!

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



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