BJOI 2022 心跡


一拖再拖的省選,終日孤獨的訓練,不敢回看的文化課,一切都似乎進入死局。

記得去年 NOI 結束后,我對自己的定位是:回來好好學文化課,OI 爭取進 A 隊,拿 Au。如果再拿一年 Ag,還不如把機會讓給別人呢。

可惜我一件都沒能做到,noip 排名是去年兩倍,還為了進省隊擔憂。

停課了一個月,感覺 oi 水平還是起起落落,大搖大擺,文化課則是一個月沒接觸過了。

這段時間的訓練模式大概是每天自己找模擬賽 vp 打,包括但不限於:

  • CTT 2021 Day 1 \(\sim\) 4
  • CTS Day 2 (Day 1 題不全當雜題,然后一點不會做)
  • JSOI 2019 Day 2
  • 九省聯考 2018 Day 2
  • IOI 2020
  • IOI 2019 Day 1
  • dmoj 月賽
  • Google Code Jam
  • Codechef Cookoff Lunchtime
  • Codeforces Round
  • JOISC 2021 Day 1 \(\sim\) 4
  • ZR 十連測
  • USACO pt 月賽 + Open
  • SDOI 2019 Day 2
  • 聯考
  • UNR \(1 \sim 3\) 全部打完!
  • COCI
  • UER
  • ICPC World Final 2020

可惜了,其中大多比賽本身就是 IOI 賽制,我也就當 IOI 賽制,這種賽制 vp 的時候很舒服。
然而感覺 OI 賽制並不是那么好模擬的,需要大樣例和對拍,平時訓練很忽視這個東西,嘗嘗忍不住說自己就交一次就算最終成績。

感覺大多 IOI 賽制打的都還不錯。OI 賽制則是崩一場趣味一場,感覺訓練不是很到位。

省選還擱着延期,還得期中考試,我不玩了,直接回去上課了。

其實我的局面還好,還有至少 1.5 年的高考和 4 月的 NOI。

清明又摸了 3 天,感覺不能這樣了啊。

省選隨緣吧。純圖一樂。

閣樓房間的角落里,你獨自描畫着地圖,懷抱着刻下終結的中標,堅信着唯一的門扉。

考前注意:

  • sublime new system: gnome-terminal -x bash -c ‘g++ $file_name -o $file_base_name && ./$file_base_name && exec bash’
  • 計算空間 ;ulimit -s / -v KB
  • 對拍 / 極限數據;

Day -14

上文化課。

Day -3

寫了 loj 拉格朗日插值板子。

Day 0

中午來機房打板子,沒寫拉格朗日插值。

五點跑步,不到一圈岔氣。

晚上 xtq 跟同學去吃飯,我一個就回家了。

七點很困,准備睡覺,心態在一種微妙的平衡之間。

十一點還沒睡着。

不懂。

Day 1

4:30 醒了。

擺到六點半,出門。

七點四十五,到考場。

肚子疼,但不讓進,在外面排隊。

進考場,忍着寫完了板子。

去廁所,回來開始了。

看題。

A 題進行一個模擬。

B 題差不多那意思。

C 題什么東西。

先花了 30min 進行一個 A 的寫,給的樣例最大 <= 8,而且沒有對拍方式,心說之后一定要檢驗一下。

想 b,想一半發現看錯題的,nmd,remake!看懂新題后,因為做過機器人,10min 會了 \(O(n^3)\),開始寫。

寫到 10:00,自己 gen 的數據 \(4.9s\)。卡常。

卡了 1h。

變成 \(1.5s\)。寫了 t2 的 gen 進行一個拍。

突然發現 t1 可能會訪問 \(1000 * 100 * 100\) 狀物,然后先離散化成編號寫的,復雜度就是 \(O(10^7)\)

把這倆拍,寫了個 a 的根,特別弱,,然后也不想造強的,擺爛。

C 題,瞪了 40min 毫無收獲,不知道 flow 對不對啊,感覺會單向構造。

還剩 40min。

趕快寫 flow,過了前三個樣例,第四個沒過。

方案突然不會構造了。

還有 10min,干啥?

突然不想擺爛,開始沖 8 分。

到 12:58 寫完調完了,樂。

期望 \((0 \sim 100) + (0 \sim 100) + (0 \sim 24(?+12))\)

浮動極大,希望人沒事。

感覺 B 就是因為常數太大了導致浪費太多時間,不過整體沒崩(到目前為止。

下午、晚上狂摸魚。

晚上手腳冰冷,不知為何。

11.30 入睡。

Day 2

5:00 醒。

直接起來了。

七點四十五,特別困。

到考場,特別困。

開局把三個題都看了一遍,感覺很沒理解,A 感覺就是壽司晚宴的那個質數根號分治分組技巧優化顯著,然后容斥一下就行了?本來覺得要寫 FMT ,后來發現不是瓶頸,直接 for 了,差不多總共 2e8,想起 8e8 2s,直接寫了。

自測極限數據 0.8s,呵呵。

拍完,過了50min。

B、C 看了,感覺 B 更可做。

想了 1h,還是只會 y = 1, x = 0 的貪心,只有區區 30 多分。(事實上好像能過 \(x = y = 1\),但是沒測大樣例,呵呵)

寫了個基於括號序列的狀態壓縮有限隊列,過不去 n = 8,這就是我,assert 猜的結論根本不對。

無奈開始拼 30 多分,對拍的時候死機了兩次,浪費 20min。

還剩 1h,開 C。編了 20min 發現可以 DP,然后感覺特別陰間,有六種 case。

先寫好寫的 \(n^4\),沖了半天,發現根本過不了拍。到還剩 6min 的時候過拍了,呵呵。

只有區區 28 分。跟 12 分 \(m!\) 五五開。

總共 \((75 \sim 100) + (24 \sim 36) + (0 \sim 28)\),呵呵了。

(upd:t1 好像很慢的樣子,很容易 t。。

感覺 gap 太大,B 這種題,WC 這種題,liuzhangfeiabc 這個人,備賽的時候 xtq 和 AKEE 都讓做 AGC 我沒做,但是做了 IOI,但是訓練仍不足,這種思維題雖然感覺 cnoi 只有 zhangyibin 一個人干這個,但他每次都干這個,,,,,,,,,,,,,,,,,,,,,,,,

總結

這次省選感覺分數和去年五五開,呵呵。

對於比較套路的 D1T2、D2T1,可以較快得出做法。並且由於賽前訓練 ds 過多,寫的也挺快,只是因為卡常浪費 1h。

對於逆向區分的 D1T1,幸運的沒有掛分。

對於有思維難度的 D1T3、D2T2,自己毫無頭緒,一開始方向不太對勁,到最后也沒拉回來。

對於 D2T3,以為是不可做題,直到剩下 50min 才發現可以 dp,還好拍過了 \(n^4\),只可惜只多了十幾分,感覺分數分配非常不合理。


出分了:\(100 + 100 + 22 + 100 + 36 + 28 = 386\)

這個成績,比上不足比下有余,zjx 和 xtq 無論如何都是無法超越的高度。

D1T2 浪費時間的原因,其實是插值 \(n+3\) 個點就夠,我寫了 \(2n + 1\)。。沒算好,感覺不如直接暴力多項式乘法,但是感覺等冪和和插值五五開,不懂。

D1T3 數組開小了,開對后可以 34,大概可以獲得所有 A + B 的數量分,不過掛 12 分在接受范圍內。以后避免,部分分盡量還是造極限數據驗證,這樣至少不會 re。

D2T1 幸運的沒有爆零,感覺還是在刀尖上走了一回。以后本機 rand 的就里時限差很近,一定要卡一下。

這場每道題基本都有了足夠的思考時間以及做題時間,分配的較為合理。

唯一的例外是 D2T3,因為誤判 D2T2 以及 D2T3 難度,導致 T2 花太多時間,導致 T3 不夠,\(n^4\) 改成 \(n^3\) 很容易,然而我常數太大,,,現場開 \(500^3\) 會卡電腦 1min,所以可能還是拿不到這分,我也認了???

D2T2 AGC 類思維題需要訓練,省選前以為 yyl 不喜歡這個,現在看來是給啥都要。

同時做剩下三道題的時候,明顯感到力不從心,想不清楚細節,自己構造、思維題太弱早就知道,可是去年 NOI21 我連套路題都做不出來,很失望,所以 vp CTT 和 CTS。思維的鍛煉感覺 CF 不夠,不如 AGC,AGC 不如 IOI,要不板刷 IOI 吧!!!


民間榜有了,大概是 rk 3,75 標准分?差 rk2 zjx 20標准分,拉 rk 4 wzj 8標准分。只看省選,全國排名大概是 10 左右?
大概應該就是這樣的排名了,變化不大?

感覺還是挺震撼,noip 后覺得完蛋了,但其實還好?加上有 400 外星人縮短人類水平差距,就相差不多了,占比也不多。事實上,我noip在 204~ 480 400 這個區間,總排名都不會變。

不過感覺這個 gap 真大,noip 落雙外星人 12 標准分,這次因為 d1t3 的數組開小,d2t2 的不會做(重點),d2t3 的分配時間少,落了擺爛的 xtq 100,zjx 60。不過他倆是全國rk1、2 感覺很恐怖d(ŐдŐ๑)

算了下自己在 JS、SC、GD、CQ 的標准分,好像分別獲得 rk 4、2、3、4 的好成績?並且標准分沒拉胯成這樣,85 左右?
好像可以做 HN、HE 等隊長?

感覺還是非常開心,之前一直覺得 A 隊遙不可及,在高二 noip rk16 后更是感覺此生無緣,沒想到我也可以做到啊。

感覺還是因為這次區分題不太需要動腦子,而且掛分的人多?應該多思維訓練啊。


毛估估了一下,如果宿舍和去年分配的一樣:

  • 和 dengyaotriangle、wzj 成為室友的概率是 \(2/3\)
  • 和 xtq、crabby 成為室友的概率是 \(1/3\)

很趣味。

upd:嗚嗚 crabby 不是第五了,好像變成了十一神秘厲害人


(暫定)之后的訓練計划:

  • IOI 往年題。
  • Public OJ VP
  • AGC、CF Div.1、UOJ 補題、泛做。
  • vp 各地省選題。(ZJOI、LNOI......)
  • ACM OpenCup(?)

哎,等等,是不是缺少了點什么 CNOI 特色!!!


部分題解 / 補題:

D1T1

模擬。遞歸節點數可能是 \(1000 * 100 * 100\),那只要把每個字符串編一個號,\(O(1)\) 遞歸就行了。

code

D1T2

考慮枚舉最小值,按現在值分成的區間分成 \(O(n)\) 段,每段答案是多項式,前綴和后插值就行。

code

D1T3

賽時我想法是對的啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

不用歐拉回路的!!!!!!!!!!!!!!

考慮先解決 C 部分分。

先做這樣一個匹配。

左邊是出度(或者表示上面),右邊入度(下面),兩者有邊當且僅當能帶來 1 的貢獻。

答案就是最大匹配數,建圖可以建虛電優化成 2n 點,4m 邊。

考慮任意構造一組方案,此時是若干鏈和環,考慮把環相當於是都是同向,那么任意一個地方斷開,然后嵌入學術社區(一定在鏈上)的那個位置,肯定可以做到的,於是完成了構造。

考慮有雙向匹配,先給匹配了肯定更優,考慮比如 AB 匹配,最終是 Ax,yB。變成AB,yx 那一定不劣?

所以就做完了。挺難寫的。

然后注意建圖要建好一點,我一開始是 5m 邊,2n + 2m 點,直接 t 了。。。。。。。。。。。。。。。。。。。

code

D2T1

對值域根號分治,按大於根號的質數對質數分組。每次欽定一個質數集合容斥,就是選的數一個都不能是有這個質數集合里的,那么枚舉小的質數集合,每個大的是一個數乘起來。預處理每個大組欽定小組一個集合的貢獻,就做完了。\(2^{14} \sum c\)

code

D2T2

考慮變成括號樹!!每次找一個往下推一層!!!

然后考慮從低往高考慮肯定不虧!!!!因為你考慮往下都推了,有幫助!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!我考場就 sb 沒想到。

x = 0, y = 1

每次往下推是自己的權值!!!那么每次保留最大的權值不往下推就好了!!!!!!!!!!!!!!!!!!!1

x = 1, y = 1

往下推是自己權值,再加上現在還在這層的隨便選一個,

考慮這層現在有 \(t\),考慮欽定推下去的 \(t - 1\) 個,前 \(t - 2\) 個都可以靠着最小值推,然后最后一個可以靠着最小值推。那么所以每次推權值都是一個加上最小值,並且你可以把最大的留下,當前貢獻和對之后的貢獻都是優秀的!!!!!!!!!!!!所以貪心就好啦!!

x = 1, y = 1

\(t_i\) 為第 \(i\) 層需要往下推的個數,這個對於所有過程都是一樣的!!!!!!1

考慮 t 長這樣:1 1 1 2 2 2 2 3 3 4 4 ... 5 4 3 2 1

這時候每次往下推的權值是 \(t_i \times mn + b_i\)

\(b_i\) 是留下的權值,\(mn\) 是這層最小的權值!!!

你整體的看,這個 \(\sum b\) 相當於是所有權值 - 最后一層的權值!!!!!!!!

所以你要讓最后一層權值盡量大,然后推下去的盡量小,,

然后考慮如果 \(t_i\) 大於等於 \(3\) 那你留下次大值一定不虧噠!!!!!!!

只有 \(t_i\) 等於 \(2\) 的那個連續段有問題,后面的 \(3 2 1\) 沒有問題,\(2\) 的時候你留下最小值,肯定對的!!

考慮那個 \(2\) 連續段,就是你要選一個扔下去。考慮之后的過程都是貪心,設扔下去的這個值為 \(x\),考慮任意一種方案,答案都可以表示為關於 \(x\) 的一次函數,那么這時候想要最優 x 要么最大值最小值,所以扔下去的一定是 \(2\) 連續段中的最大或者最小,分別做一下就做完了!!!!!!!!!!!1

考試主要想不到的是從小往大推,和這個 - 最后一層權值,說明我們需要整體看!!!!!!!!!!!。

code

D2T3

我考場因為沒剩多少時間了。

這個題和樹上的數十分類似,我一開始思路就是確定一個點出度邊的順序,那么誰去誰的確定了,然后搗鼓半天發現需要分別記錄向上向下傳播的距離才能 dp,然后就狀態 \(O(n ^ 3)\),就寄了,頂天 64。

然后正解其實和這個狀態設計差不多,但就是優秀,就是什么呢?他記錄的是一個考慮 u 子樹的邊,然后 u 誰從父親邊上去了,一個人從父親邊下來去了哪里(距離或點編號都行)。

相較於原先那個垃圾東西記得都是:最終去哪了,這里記得兩個東西都是在子樹內的,並且肯定分屬兩個不同子樹或者是 u,這樣空間就可以 \(O(n ^ 2)\) 了,為啥這么神奇?????

不懂啊,是不是你考慮 dp 的時候,合並的復雜度是對的,但是向子樹外延展這個距離,就是不好把控的了。

然后 dp,七種情況分類討論,感覺討論清楚還是挺難的?我考場 對拍出錯了 n 次,但討論難度感覺和正解五五開啊,輸飛了。。

code

upd:詳細題解


免責聲明!

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



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