THUSC&PKUSC2024遊記

rlc202204發表於2024-05-15

Day -inf

CSP-S 200, NOIP 289。

Day -inf

過了 PKUWC,100+11+10+100+28+18 = 267,低於大眾分,喜提二等。

Day -inf

竟然過了 THUSC 和 PKUSC,神奇。

lhr 也過了,可惜 zyj 沒過QwQ。

Day -1

zby 玩我的魔方被收了,難蚌。

Day 0

五點半起床,坐動車,做到晚上五點才到餘姚,好累啊。

和 lhr 去吃飯,然後上課遲到了。

沒打啥板子,畢竟我要是連板子都不會打的肯定也做不出來。

Day 1

有衣服,一個轉盤和一個袋子,不錯。

竟然不是在餘姚考,要去什麼社群學院。

然後就坐擺渡車去了。

試機,結果我的電腦上 codeblocks 彈不出執行視窗,自己搞了一個小時還是不行,於是問監考老師,然後監考老師很熱心地幫我調終端,結果過來一個巡考老師說這是系統問題,系統問題他們不負責。

……

只好現學 VScode 和終端編譯,不過感覺也還行。

lhr 告訴我有一個阿拉丁神燈很好用,不過還是用的 VScode。

中午盒飯四隻大蝦,可我不吃海鮮,於是 lhr 吃了八隻。

回酒店睡覺,下午考試。

13:30 開始。

先看第一題,好詭異,應該是數數題。第二題是個字串,再看第三題。

這不是金老師高階 5 Assign 那題原題嗎????????

只不過帶了個權,不過問題不大。

然而我已經快忘了那題這麼做了,似曾相識的場景:PKUWC2024D2T3,和 P7560 一樣的套路,然而當時只看了題面就沒管了,最後只會最低檔暴力。

於是先開 T1,不會,只會 5pts 連續自然數求和。開 T2,不會,先打了個 7pts 暴力。

於是決定還是開 T3 吧。

想了一會兒,發現大概使二分,然後維護兩個 \(dp\) 值,然後給沒定向的定一下向。大概會了?

開寫,結果寫假了,但是過了所有大樣例,無語。

發現哪裡假了,決定改成一個玄學的增量法:每輪定一些邊,什麼時候定不了了就停止。

最壞可能是 \(O(n^2)\) 的,不過應該有 76pts, 先寫上,寫完,交一發試試。

結果過了。

雖然只是 pretest,但是感覺跑得飛快,而且即使掛了也有 76pts,所以就沒管了。

再看 T2,想了一下子序列問題的經典套路就想到了等價條件:每次調 \(nxt\) 中最大的,能跳 \(k\) 次就可行。

根絕這個結論很容易推出構造:先把最後補全,再填 \(a \sim z\)

開寫,一發過掉。

已經 200pts 了,贏。

回頭看 T1,寫了 \(l = 0\) 的 20pts,但是 \(\prod n \le 10^9\) 的暴力沒跑過去,這個資料範圍真的很無語。

已經 225pts 了,T1 感覺是個數位 \(dp\),但是我數位 dp 沒做過幾道題,應該寫不出來,所以開 T4。

這個提交答案題很好玩,發現前四個都是快速冪,後面的看不懂。

於是用而二進位制構造,結果只有可憐的 4+3+2+0=9pts,不會了。

壓根沒發現第四個樣例我的答案比原程式時間還多。

然後比賽就結束了。

lhr 沒想出 T2,可惜了,然而他 T1 的暴力過了,也是 dfs,看來我的 dfs 寫得太爛了。

和父母去吃飯,結果遇到一位很開朗的高中學長,一起吃了一頓。

聽學長說完 T1 後發現 T1 好像確實不難,只能說我不會數位 dp 吧。

感覺這個分還可以,準備迎接第二天工程題。

Day 2

八點半開考。

一看題面是 Wordle,看過 3b1b 的影片,贏。

結果發現學習材料和 3b1b 講的完全一樣,看沒看過都一樣。

開題,發現 T1,T2 只是簡單的模擬,開寫。

結果這個讀入很陰間,還寫錯一個小地方,一直調不出來。

T2 肯定是在 T1 基礎上改,於是看一下 T3。

發現 T3 好像很簡單,拿個連結串列維護一下即可,於是寫 T3,然後以一發過了。

回頭看 T1,發現哪裡錯了,改完就過了。

T2 也很快過了。

然而已經兩個半小時了。

開 T4,直接 T3 改一改。

結果還是寫錯好多地方,過的時候已經三個半小時了。

T5 是一個求解器,只剩半個小時了,感覺寫不完。

用 T4 的程式碼改,改完後交發現錯了,一看是陣列沒清零。

結果考試時間結束了,喜提 400 整。

lhr 說 T3 改一改 T5 就可以 64 了,那我 T4 改一改豈不是直接 80+!!!

還是碼力不足啊。

中午沒在學校吃,去旁邊餐廳吃,這裡的紅燒肉真的好好吃啊。

lhr 把餐卷送給一位雅禮老哥,結果發現那是個已經拿了銀牌的大佬,膜拜%%%

下午講座加講題,聽講座是一直在玩 wordle,真的很好玩。

講題,發現 T1 真的是簽到,就是一個狀壓配合數位 dp,超過 1/3 的人過掉,還有各種到大佬吊打 std,直接將從 \(O(2^d)\) 擴充套件到 \(O(d)\),神了。

不過 T2 更籤到。

T3 和正解差不多,看出題人的思路應該沒有想到我的亂搞,估計不會卡。

T4 逆天題,前三個點暴搜出最優狀態,第四個點由於 \(998244353 + 75497471 = 2^{30}\),直接累加三十次即可。五六七原來是區間求和,各種資料結構亂搞即可。

8,9 是什麼莫比烏斯變換和子集變換,這麼神奇。

最後一個點純隨機,忘了怎麼做了。

最後發獎狀,還是拿了一等,挺好。

然後就和 lhr 一起去杭州了。

Day 3

學軍中學校園真的好好看啊!

先去簽到,然後去聽講座,但是一直在和學長和 lhr 玩 wordle。

和 PKUWC 大同小異,但是學軍的校長上臺致辭,說:“今天天氣很好,看來 pku 的氣場很大,昨天還在下雨呢”。

難蚌,昨天餘姚確實在下雨。

去試機,感覺上次經驗,決定打板子。花一個小時打了一個多項式全家桶,不過感覺用不上。

我的 NTT 不知道為啥錯了,後來發現是沒有乘 \(\omega\)

中午盒飯很好吃。

然後回禮堂休息,和 lhr 瘋狂複習板子。

下午一點就開始考試了,原來上廁所不用舉手啊。

根據 PKUWC 的經驗,爭取每天一道題加暴力打滿。

掀開 T1,串串題,T2 神馬計算幾何???????????T3 數數題。

由於最近做了好多數數題,所以初步思路:切 T1,T2 打最低檔暴力,嘗試 T3 多拿點分。

T1 大概五分鐘後就會了,列舉迴文中心,然後套兩個二分配合字串雜湊就可以了。

程式碼寫了 50min,13:55 過掉。

然後看 T2,先把長方形的寫了,後面就不會了。

開 T3,先寫了個 \(O(m^n)\) 的暴力,然後想怎麼 dp。

想了一會兒想到了,直接 dp 套 dp,維護選不選的 \(dp\) 值作為狀態即可,複雜度 \(O(n^3m^2)\),當然轉移應該更高,過掉了第二個 sub,總共拿了 35pts。

後面就感覺不太會了,於是只好回去看 T2。

不太會三角形,感覺很難,決定從 sub3 開。

發現必須要判斷每個點在不在凸包內,可是我連高中的向量都沒學過。

玩了一會兒發現一個點在凸包內等價於將凸包的邊看成向量,這個點在每條向量的同一方向。

轉化成判斷兩個向量的夾角的正負,不會叉積,但是會行列式,看過 3b1b 的影片,所以知道行列式是算面積的,面積有正負,直接看面積的正負即可。

然後一個 \(O(V^4)\) 的列舉過掉第三個 sub。

嘗試最佳化,想了很久後發先可以剪掉一些無用的,又滑了一下過掉了 \(n \le 300\)

但是進一步就不會了。

最終 100+45+35=180pts 離場。不過比去年還是進步了很多的。

和 lhr 去吃飯,紅燒肉太好吃了。

晚上去騎車,共享單車有點難找,但還是找到了,杭州甚至有專門的腳踏車道,騎著非常舒服。

還去大蓮花裡轉了一會兒,在籃球成沒有籃球,於是和 lhr 扔瓶子,然後還踢瓶子。

玩的很開心。

Day 4

聽說今天數學考試,贏!

上午講座本來打算睡覺,結果主講人出場那一刻一看 ppt:

吉如一!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

見到本人了,激動。

自我介紹時說到某百科上描述他為 “毒瘤出題人”,這次不會他出題吧,和 lhr 趕緊開始複習吉司機線段樹。

講的很有趣,自動 AC 機,速通函數語言程式設計,還有什麼列表同態,酸雨定理等。

中午的飯依然很好吃。

下午最後一場考試了。

先看了一遍題,T1 很經典但是沒思路,T2 大 DS,T3 亂搞題?

T1 很快想到了等價條件:每個點都經過偶數次。

然後推出每個點給兩個兒子各一半,所以將最開始的點設為 1,每次將一般給兒子,最後看需要乘上幾才能使得所有都是偶數。

這不是 NOIP2020 排水系統嗎?

然後就發現 \(n \le 50000\) 和題面的提示,需要高精度。

無語,先打了不用高精度的,發現做法沒問題。

然後開始寫高精度。

發現每個分數分母都是 \(2\) 的若干次冪,所以寫了個 bitset 維護分子的大小,這樣可以通分時快速平移。

但是加法不好實現,寫了個遞迴的 \(a+b=(a\oplus b)+2(a\&b)\),以為很快。

結果最後只有 75pts,過不去最後兩個 sub。

以為是最後算 2 的冪慢了,把試機打的 NTT 複製過來,但是提速效果不明顯。

先不管了,去看 T2,T3。打了最低檔的暴力,結果 spfa 跑不過 T3 第二個 sub。

耗了一個小時也沒啥進展,只能繼續調 T1。

突然發現這個加法的實現是 \(O(\frac{n^2}{w})\),小丑了。

於是改成直接手動模擬加法,再記錄一個最高非零位,然後過了最後兩個大的,沒過暴力。

那就直接兩份程式碼拼一起交了,然後過了。

還剩一個半小時,決定衝 T2 部分分。

感覺 \(R_i = n\) 很難做,先做 \(r_i = n\),發現就是一個離線加上線段樹和樹狀陣列即可。

寫完後又去做 \(l_i=0\),也是類似的。

但是寫假了,對拍了發現需要線段樹上二分,然後就過了。

沒有時間了,最後 100+40+5=145pts 離場。

然後就趕飛機回深圳了。

Day inf

PKUSCD2T2 正解就是一個離線加線段樹二分,可惜 T1 耗太久沒時間了。