2.11 それは命の證 ——ARC116~118

LarsWerner發表於2024-03-26

冰豔天使臨何處 白洲昨夜紫花開

ARC116

ARC116D I Wanna Win the Game

直接數位 DP。\(f(i,j)\) 表示考慮前 \(i\) 位,總和為 \(j\) 的方案數。轉移列舉該位 \(1\) 的個數。使勁分析一下發現總複雜度 \(O(n^2)\)

ARC116E Spread of Information

先二分,然後再進行貪心。\(f_u\) 表示 \(u\) 子樹中選點個數,\(h _u\) 表示子樹中關鍵點到 \(u\) 的最小距離,\(g _u\) 表示子樹中未滿足的點到 \(u\) 的最大距離。直接做即可。

ARC116F Deque Game

考慮一下只有一堆的方案。容易發現長度為奇數那麼後手獲利,長度為偶數那麼先手獲利。於是一定先去嘗試搶偶數的先手,然後把偶數變為奇數的情況。於是一定是先輪流挑偶數的先手步(刪最左還是最右),之後所有都是長度為奇數了。長度為偶數不會改變先後手。所以就做完了。

ARC117D Miracle Tree

可以發現等價於在樹上沿著樹邊遊走一下,最小化每個點的到達時間。這個問題是容易的。

ARC117E Zero-Sum Ranges 2

考慮在座標系上畫出折線,從上往下線頭 DP。\(f(i,j,k,x)\) 表示考慮到 \(y\ge i\) 的部分,有 \(j\) 段線頭,線總長為 \(2k\),對 pair 數量的貢獻為 \(x\)。直接 DP 可以列舉 \(a\) 表示在 \(i\) 處合併的線頭數量,\(b\) 表示在 \(i\) 處新建立的線頭段數,那麼容易發現轉移只與 \(b-a\) 有關。對每種 \(b-a\) 預處理轉移係數和即可。然後考慮對答案的貢獻。我們在 \(y=0\) 處列舉上下半區域的線頭數量,線頭長度和,以及在 \(0\) 處合併的線頭數量。去除冗餘變數的列舉,總複雜度 \(O(n^6)\),但很快。

ARC117F Gateau

首先我們二分答案,然後不難發現一個關於字首和的差分約束模型。把圖畫出來,發現可以抽象成這樣:有兩排點,其中每排點都有從右往左的鏈邊,同時每列都有上下互通的邊,同時第二行的最左側點還指向第一行的最右側點。如果沒有最後那條邊那麼就沒有負環,所以負環一定經過這條邊。DP 求出從右上到左下的最短路即可。求右下到左上的最短路可以先 DP 一次,然後再用這條邊鬆弛一次,再 DP 一次。容易發現這也是對的。

ARC118

ARC118D Hamiltonian Cycle

不會構造怎麼辦???我們令 \(n\)\(a^i\) 的模 \(p\) 的迴圈節,\(m\)\(\min j\) 使得 \(b^j\equiv a^i\)。那麼我們畫張 \(n\times m\) 的表格,其中一定要每個數出現一次,否則一定不行。那麼對於一個網格圖的哈密頓路是容易的。就好了。

ARC118E Avoid Permutation

考慮 DP:\(f(i,j,k,0/1,0/1)\) 表示考慮目前走到 \((i,j)\),路徑上有 \(k\) 個沒有被決定的點被欽定,且該行/列是否有被欽定的點,容斥係數之和。於是令 \(c\) 表示未被決定的點的數量,那麼答案就是 \(\sum f(n,m,k,p,q)\times (c-k)!\)

ARC118F Growth Rate

首先令 \(g_i\) 表示 \(a_i\) 的上界,那麼有轉移 \(f_{i,j}=s_{i+1,g_{i+1}}-s_{i+1,a_ij-1}\)。容易發現 \(f\)\(n-i+1\) 次多項式,所以考慮直接插值。

由於只有 \(\log M\) 個非 \(1\) 元素(\(1\) 元素直接做字首和轉移),所以總複雜度 \(O(n^2\log m)\)

相關文章