教練忽然說要考一場別省省選來測試水平...正好還沒看題那就當VP咯w...html
八點開題打 .vimrc
.算法
先看了看題目名...一股莫名鬼畜感襲來...vim
怎麼T1就是字符串鴨?HEOI 2019 D1T2的心理陰影爲啥我會xjb套那麼多東西上去啊QAQ...T2數論T3通訊? 很差的感受...數組
讀了讀T1, 神仙字符串排序, 溜了溜了數據結構
讀了讀T2, 模兩個模數同餘? 溜了溜了...測試
讀了讀T3. 誒這個東西怎麼這麼費用流啊? 看看數據範圍...誒這個 \(n\) 才 \(1000\) 啊? \(n^2\) 條邊暴力建圖信仰一發是否是就能夠了鴨?ui
等等好像有 \(80\%\) 的數據 \(n\le300\), 這個數據範圍費用流好像穩穩啊? 趕忙碼...spa
\(20\texttt{min}\) 以後碼了個費用流板子碼得真慢, 一遍把樣例A穿了, 爽翻.調試
交上去以後回去看T1.code
冷靜分析了一波, 發現好像和某道要花式求後綴數組的題很像, 對原串求個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了碼單)
因爲前一天題比較水因而莫名感受能上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