SNOI2019場外VP記
教練突然說要考一場別省省選來測試水平...正好還沒看題那就當VP咯w...
Day 1
八點開題打 .vimrc
.
先看了看題目名...一股莫名鬼畜感襲來...
怎么T1就是字符串鴨?HEOI 2019 D1T2的心理陰影為啥我會xjb套那么多東西上去啊QAQ...T2數論T3通信? 不好的感覺...
讀了讀T1, 神仙字符串排序, 溜了溜了
讀了讀T2, 模兩個模數同余? 溜了溜了...
讀了讀T3. 誒這個東西怎么這么費用流啊? 看看數據范圍...誒這個 \(n\) 才 \(1000\) 啊? \(n^2\) 條邊暴力建圖信仰一發是不是就可以了鴨?
等等好像有 \(80\%\) 的數據 \(n\le300\), 這個數據范圍費用流好像穩穩啊? 趕緊碼...
\(20\texttt{min}\) 之后碼了個費用流板子碼得真慢, 一遍把樣例A穿了, 爽翻.
交上去之后回去看T1.
冷靜分析了一波, 發現好像和某道要花式求后綴數組的題很像, 對原串求個SA然后分段求LCP來得到兩個要排序的串的第一個不同字符的位置, 這樣就可以 \(O(1)\) 比較兩個串了. 能比較之后丟到 std::sort
里這題就做完了.
這才是T1嘛233
碼了半拉小時之后Pretest Passed.
這時候時間過去 \(90\texttt{min}\), 當時我就覺得我穩了, 於是上了個廁所准備正面剛T2.
思考了一會之后感覺除了知道這東西有個長度為 \(\operatorname{lcm}\) 的周期之外就啥也不知道了.
那個 \(\operatorname{lcm}(P,Q)\mid T\) 的部分分好像明示要先想想一個周期里的情況...還能有啥啊? \(\operatorname{lcm}(P,Q)=\frac{PQ}{\gcd(P,Q)}\)?
等等分母是 \(\gcd\)?
想起「Bézout's Lemma」
也就是說只有 \(A_i\equiv B_j\pmod{\gcd(P,Q)}\) 才會存在某個 \(x\) 滿足 \(x\equiv A_i\pmod P\) 以及 \(x\equiv B_j\pmod Q\) 咯?
\(P\) 和 \(Q\) 除掉 \(\gcd\) 之后就互質了, 根據CRT這個差除以 \(\gcd\) 的值是有唯一解的? 也就是說一個循環里 \(A_i\) 和 \(B_j\) 相遇且僅相遇一次咯?
感覺挺靠譜的, 好像能拿 \(40\) 分了. 這樣的話就可以把 \(T\) 模掉一個 \(\operatorname{lcm}\) 了. 問題只剩剩下的值了qwq...
好像搞出關鍵結論了正解也不遠了? 是不是把一個 \(\gcd\) 長度的塊看成一個整體然后再給這些塊按照另一個模數的訪問順序排成一個環然后直接在這個環上二分就可以了得到 \(<T\) 的匹配數了鴨?
YY了一下好像以 \(O(n\log n)\) 的圓滿復雜度解決了這個問題. 雖然感覺超級難寫但是還是作死開始寫.
寫了一個多小時果然棄療了, 刪掉了二分的部分改成暴力從 \(0\) 到 \(T\bmod \operatorname{lcm}\) 枚舉了.
剩下的時間摸掉了.
出分, \(100+80+80=260\)? 啥玩意?
怎么這個T2數據可以這么水啊...是不是故意構造的鴨...
校內rk3, 前面是兩個 \(280\) 的神仙.
hahamengbier&Jumbo用KM二分圖最大權匹配碾掉了T3還順手拿了LOJ榜一.
神仙hzoizcl用玄學NTT干掉了T2...wtcl...
看了看noi.cn的成績公示好像已經上隊線了?(woc我也想去SN了碼單)
Day 2
由於前一天題比較水於是莫名感覺能上400(flag)
開題.
淦哦怎么上來就開始麻將計數了? 跳跳跳...
跳到T2之后看見配圖感覺一陣更濃的鬼畜感襲來...
T3是啥神仙數據結構趴? 等等這個 \(5\times 10^6\) 好像數據結構不太會能做鴨? 算了打個暴力跑路趴T_T...
完蛋, 二試被翻盤的節奏不對啊反正day1就已經上隊線了我慌什么快醒醒你不在SN這不是你的省選
雖然這個T2看上去就很坑而且沒有部分分, 可是我偏要玩玩(提答多好玩鴨)
玩了一會, 好像只要 o
不在該在的位置都可以用一步移動讓兩個壞塊成為好塊?
誒好像一直這么翻可以把所有聯通的壞塊都干掉啊? 那我是不是翻完一整塊找下一個整塊就可以了?
走過去產生的新壞塊好像會在fix舊壞塊的時候順便fix掉? 那豈不是穩穩了?
是不是得找最近的鴨? 腦抽感覺找最近的好像得用k-DTree...算了趴...
於是YY了一個智障尋路算法, 每次找壞塊集合里的第一個然后在所有可行走路方案中選最接近那個壞塊的.
感覺好難寫好難寫, 於是回去搞T1.
大力猜測了一波, 看了看這個數據范圍感覺怕不是對於 \(n\times C\) 的情況有 \(O(1)\) 式子...誒然后再補集轉化一下用 \(O(XC)\) DP出選少了的情況是不是就可以了啊?
頭鐵搞了一會 \(O(1)\) 式子把自己搞自閉了.
搞 \(O(1)\) 式子的時候感覺這東西好像只判合法性, 也就是說可以用順子把模 \(3\) 不同余的部分搞掉然后剩下的填刻子?
誒那我是不是可以用DP在狀態里記錄一下最后兩個編號分別有幾個順子沒有完成就可以轉移了鴨?
好像狀態只有⑨種? 那把轉移寫成矩陣然后分段快速冪一下不就是個⑨題咯?
時間復雜度是啥啊...\(O(X\times 9^3\log n)\)? 好像 \(X\le 1000\) 很靠譜的樣子.
感覺超好寫, 於是就開始碼, 碼完又把Pretest A穿了...
交上去之后開始搞T2, 碼了一個多小時碼出來了, Pretest弱的不行直接就過了, 手捏了一組壞塊不連通的數據也過了.
交上 T2 的時候已經 \(11:20\) 了, 感覺不太能寫 T3 狀壓於是就寫了個 \(d=n-1\) 的sb \(10\) 分.
剩下時間又雙叒叕摸掉了
出分, \(100+10+10=120\), 大家 T2T3 都是暴力分233
看了看T2代碼發現我調試用的 if(++cnt>2)exit(0);
沒刪...白扔 \(10\) 分.
神仙 Asttinx64 T2 寫了一堆 lambda 於是編譯超時保齡了...再加上 static
的debuff好像LOJ上也保齡了...(去掉 static
就A了, 太強辣!)
校內排名又是rk3 qwq...
兩天總分 \(380\).
跑到noi.cn上查了查SN的成績, 發現這分可能穩A類? 怎么這個ranwen才365啊
下來翻了翻LOJ的AC代碼, 發現好像只要把那個找下一個壞塊的過程改成DFS就星了...我太菜了QAQ...
所以麻麻我要去SN