2.18 The sea I hang upside down will be your sky ——ARC128~130

LarsWerner發表於2024-03-26

可能是太菜了,有兩個 F 不在這裡。後面會陸續補上這些題,但是今天的古報就先到這裡了。

ARC128

ARC128D Neq Neq

最終一定是一些區間被刪了。而探究一個區間能被刪掉的條件:我們發現如果區間 \([l,r]\) 有三種不同的數,那麼 \([l+1,r-1]\) 一定可刪,否則只有 \(l=r-2\) 才行。於是直接 DP。

ARC129D -1+2-1

本以為只有我在使用代數方法。沒想到這題正解就是代數方法。考慮設在 \(a_n\) 作為 \(i-1\) 的次數為 \(y\),在 \(a_1\) 作為 \(i -1\) 次數為 \(x\)\(i\) 處作為 \(i-1\) 次數為 \(f_i\),那麼有 \(f_i=a_i-f_{i-2}+2f_{i-1}\),帶參計算。然後最後得到兩個關於 \(f_{n-1}\),與關於 \(f_n\) 的方程。由於 \(x,y\) 沒有固定解,所以一定要這兩個方程線性相關,且有整數解。於是可以得到 \(x=x_0+kp\)\(y=y_0+kq\),二分這個 \(k\) 即可。

ARC129

ARC128D K Different Values

考慮令 \(w=\lceil\frac{m}{k}\rceil\),那麼如果 \(a_i>w\) 那麼顯然無解,否則看一下 \(a_i=w\) 的個數,如果超過 \(m\bmod k\)\(k\mid m\) 時取 \(k\))那麼也無解。否則可以歸納證明有解。然後我們每次貪心取,如果 \(a_i=w\) 的個數等於 \(m\bmod k\) 那麼一定要選 \(a_i=w\) 的,否則隨便選。這樣取下去也一定是有解的。

ARC129E Yet another minimization

一個非常典型的切糕模型。考慮 \(a_i=i\) 時的切糕:\(S\to A_{i,0}\to A_{i,1}\dots,\to A_{i,m}\to T\),對於 \(i,j\),有 \(A_{i,x}\)\(A_{j,x}\) 互相有 \(w_{i,j}\) 的連邊,然後 \(A_{i,x}\to A_{i,x+1}\)\(c_{i,x+1}\) 的代價。然後考慮現在需要縮掉一些邊。然後我們如下考慮:我們把這些邊給每條鏈從上往下畫出來,那麼對於位置在 \(x\) 的邊,可以挪到兩個在其上邊(\(\le x\))且最靠近的兩個點上。於是我們的對 \(\{a_i\},\{a_j\}\) 離散化後,將一段區間的 \(x\) 的邊給挪成同一條邊。於是複雜度就很對了。

ARC128F Game Against Robot

考慮先變成 \(0,1\),即對於每個 \(m\),求出 \([2n-m+1,2m]\) 一共被選了多少次,即 \(m\) 個 1 \(2n-m\)\(0\) 的所有情況下選 \(m\) 的個數。由於我們是每次加兩個刪一個,於是我們兩個分一組,考慮對總和的貢獻。\((1,1)\)\(1\)\((1,0)\)\(0\)\((0,0)\)\(-1\)。但是如果我們選 \(-1\) 的時候,如果其是"創新低"的,那麼就會導致我們選上一個 \(0\)。即我們選的 \(0\) 的個數等於 \(-\min\)。我們考慮反射容斥,得到 \(-\min>k\) 的情況方案數為 \(\binom{2n}{m}-\binom{2n}{2n-m-2k}=\binom{2n}{m}-\binom{2n}{m+2k}\)。於是我們要算 \(f_i=\sum_{k=\max(0,n-m)}^{n} (n-k)(\binom{2n}{m}-\binom{2n}{m+2k})\)。這個就是 trivial 的了。

ARC130

ARC130D

考慮取一個 deg>1 的點作為根,於是我們在選擇完根是小於/大於周圍點之後,剩下點的狀態也於是固定。於是 DP:\(f_{u,i}\) 表示 \(u\) 子樹,其中 \(u\) 在子樹中的排名為 \(i\)\(u\) 小於兒子的方案數。\(g\) 為大於的。轉移很容易。

ARC130E

考慮倒序操作,那麼每次就是選擇一個點,使得其操作了之後變為最小。那麼這個點一定是一定要處於 \([\min,\min+1]\) 才能操作。考慮最終的局面,最小化初始值等同於最小化最終局面。那麼根據前面這個性質,我們一定有最終局面的每個數處於 \([x,x+1]\),並且最晚操作越晚的越大。我們按最晚操作的時間從左到右排序,那麼字首為 \(x\),字尾為 \(x+1\)。然後我們考慮一開始假定都是 \(10^9\),然後操作,每次挑出(該操作完成後)最晚操作時間最早的最小值。如果不是同一個元素,但最小值相同,那麼需要滿足一個區間全部相等;如果最小值不同,那麼必須滿足一個元素在最小元素左側,且值相差一,那麼一開始就需要滿足這個元素為 \(x\),最小元素為 \(x+1\)。得到了這些條件之後,我們就可以求出這個分界線。由於要最小化,所以分界線一定是越右側越好,但是又因為會影響到最小值的取值,所以我們列舉分界線在最小值的左側還是右側即可。

相關文章