20240915 總結

xingyu_xuan發表於2024-09-15

這周 VP 了兩場 Div.2。均獲得較高名次,可能之後需要 VP ARC 這種有點強度的比賽更好一點。

聯考:

20240909

T1 又是數學。

T2 唐氏了。注意到有結論,一個合法路徑必定可以調整到經過一個在時間上正好能走的邊。然後就簡單了。正著反著 dij,然後 \(O(m)\) 合併。

T3 更為唐氏,場上好像只差一步轉化,可能彎路繞多了導致的。首先把兩邊都有出口的 bot 提出來,然後兩兩限制當且僅當 \(l_i\leq l_j,r_i\leq r_j\),其中 \(l_i\) 為負,代表向左走的最近的出口,\(r_i\) 同理。

把這個限制轉化到二維平面上的一個字首,對於點 \((\infty+l_i,r_i)\),這個就相當於如果這個點選 L,那麼字首隨意選,否則字首都只能選 R。記錄 \(f_i\) 為每個時刻,對於橫座標大於等於 \(i\) 的點計數的方案數。我們按 \(l\) 絕對值從小到大加入點。

每次加入,相當於在區間 \([0,\infty-r_i]\) 上進行修改,我們會驚喜的發現,我們相當於加入了這個新點填 R 的情況的貢獻。而在這個區間中,它是一個定值!即為 \(f_{\infty-r_i+1}\)。離散化後樹狀陣列維護即可,最後答案即為 \(f_1\)

考慮初始值,不難發現原來 \(f\) 全是 \(1\)。真的很巧妙的一個觀察啊!

20240910

大部分人的評價是:不如出卡精度 GEO。

T1 shabi,之前正好 vp 過一個 CF1656F 強於此題。

T2 純唐。不過又積累了一個新的 DP 轉移的一種方式。

考慮設 \(f_{i,j}\) 為第 \(i\) 個位置開始消除,直到只剩下 \(j\) 元素的最小右端點。考慮因為 \(f_{i,s_i}\) 最小且固定,且空集由 \(26\) 轉移過來,所以其實空集的轉移物件只有 \([1,s_i-1]\),因為其餘的轉移是不優的。很厲害啊!所以我們可以設定一個轉移順序:\(s_i\to \text{z},\varnothing,\text{a}\to s_i-1\)。然後轉移有兩個 \((j-1)+(j-1)\)\((\varnothing)+(j)\)

最後用 空集處的 DP 值 倍增就能判斷是否合法。

T3 奇藝搞笑的馬良題。就是縮成 babababa 類似的字串,每次交換每段與字首合並,一個字串為空就把另外一個字串的一半拉過來。

T4 niubi。容易想到回滾莫隊。但是我們有性質:這個題如果能支援刪除那麼可以雙指標。推一推就可以發現我們可以把決策單調性分治的過程回滾化了。時間複雜度 2log。

20240912

T2 拍出來有問題,然後給我放過了/qd/qd/qd/qd

T1 shabi/qd。

T2 大概是先列舉迴文中心,然後這個東西滿足貪心,一個正反 KMP 和 Manacher 就 OK 了。然後我場上是列舉的迴文中心是一個串的迴文串,然後就不知道怎麼做了/qd,然後我欽定迴文串只有最大的才有貢獻。場上其實是證出來了迴文中心滿足貪心,但是根本沒有往這個列舉想。

T3 課件原/qd/qd/qd/qd/qd/qd,CF1149D。

T4 P8394/qd。場上一直不知道 \(G=1\) 怎麼做,然後最後才胡出來,然後就會 60 了。但是怎麼可能寫完。我場上沒考慮預處理,但是二分是顯然的/qd/qd/qd/qd/qd/qd/qd。大概就是二分一個字首長度,這個字首都從前面出來,這個字尾都從後面出來,然後要保證這兩部分貢獻儘量相等;即如果前面小於後面,那就向後面走,否則想前面走。預處理一個字符集對於一個點前面和後面的貢獻,然後就完了。

20240913

T1 /qd。

T2 雜湊。場上胡的是多重集雜湊,時間複雜度 \(O(n|\Sigma|\log n)\),還帶巨大常數,但是單模的正確性足夠高,直接過了。但是實際上可以設 \(i-pre_i\) 為權值,然後 \(O(n|\Sigma|)\) 對於每個字尾找到哪些本該為 \(0\) 的位置填了 \(1\)。然後二分的時候,可以比較 \(O(|\Sigma|)\) 段雜湊值,如果有不同再二分。然後如果 \(0\) 的位置不一樣可以直接判斷。這樣能做到 \(O(n|\Sigma|+n\log n)\)

T3 出題人有點私募了。考慮設 A 為 \(1\),B 為 \(2\),在模 \(3\) 意義下,和為 \(1\) 的非交替串剩 A,和為 \(2\) 的非交替串剩 B,剩下的是空集。可以透過這個加法證明最後那個為 \(0\)。然後出題人就知道這個充要條件就開始發電了。用一個矩陣維護和,然後用一個矩陣維護交替串數量。然後因為是區間子區間問題,我們對於每個區間還要維護其答案,維護其字首積的和和字尾積的和。然後你還要反轉,所以標記還要兩倍。

注意前字尾積的和在未啟用狀態下是全 \(0\),區間的積是單位矩陣。我覺得一個正常的出題人都最多出到子區間,啟用這個太無腦了。

T4 在 dfn 序上 DP。計算減去的代價的最大值。把 LCA 這個條件搞成在目前祖先的子樹最大 DP 值更新,然後這裡有支配性,即其其他子樹的決策或者其之前沒有更新的時候的決策劣於現在的決策。搞出來是一個斜率最佳化的形式。因為詢問的 \(x\) 沒有單調性,就只能直接上李超樹了。時間複雜度 \(O(n\log V)\)

下週繼續整二項式反演。

賽後排行榜真的很困難,而且下週和下下週連續 ARC 和 AGC。沒法開發。/ng