Day1
T1
solution-洛谷博客 solution-cnblogs
首先我們考慮構造出一個符合題意的數列。
每次選擇一個 前面 \(k-1\) 個位置上都不是 \(0\) 或者已經選過,並且當前位置為 \(0\) 的位置,然后把它的值置為這個序列的最大值。不難發現這樣做一定能構造出一個符合要求的排列。
這個構造的過程可以用線段樹+set優化到 \(\Theta(n\log n)\)
不難發現,一個排列符合條件相當於它的每連續 \(k\) 位的相對大小關系和我們構造出來的排列相同。
那么,不難證明在 \(2k>n\) 的時候只有唯一的一個排列,所以不判 \(0\) 直接比較可以獲得子任務 \(2/3/4\) 的分數。
現在排列不唯一怎么辦?
考慮對於每個點,求出它往左/右 \(k\) 個位置中,比他小的最大的數字的位置,分別記為 \(pre_i\) 和 \(nxt_i\) ,然后對 \(pre/nxt\) 做一個倍增。
對於每組詢問,假定我們構造的排列 \(A\) 滿足 \(A_x>A_y\) 。
我們從 \(x\) 開始,通過 \(nxt\) 和 \(pre\) 往左右跳,保證跳的時候仍然滿足當前位置的值 \(>A_y\) . 如果跳到的區間包含了 \(y\) ,那么就輸出 \(1\) ,否則不能確定,輸出 \(0\) .
\(A_x<A_y\) 的情況類似。
\(\Theta((n+q)\log n)\)
T2
solution-洛谷博客 solution-cnblogs
首先,如果存在 \(p_{i,j}=0\) ,那么就分成了多個聯通塊,這些聯通塊分開做即可。
由於 $p_{i,j} \leq 3 $ 所以一個聯通塊當中不能出現多於一個環,否則必然會有兩個點之間有 \(4\) 條路徑。
沒有環的情況(聯通塊內 \(p_{i,j}\) 均為 \(1\) )先判掉,那么這個聯通塊正好有一個環。
不難發現,如果兩個點 \(x\) 和 \(y\) 之間的路徑需要經過多於一個環上的節點,那么 \(p_{x,y}\) 就等於 \(2\) ,否則 \(p_{x,y}\) 為 \(1\) , 因此如果存在 \(p_{x,y} = 3\) 那么也無解。
把所有的 \(p_{x,y} = 1\) 的 \(x\) 和 \(y\) 合並到一個聯通塊中,把這些塊之間連成一個環, \(check\) 是否合法即可。
\(\Theta (n^2)\)
T3
首先我們考慮如何求出最大值。
不難發現這個抽獎的過程中,工作人員必然會取中位數來最小化當前輪次的獎勵。
因為n是偶數,不難發現我們能獲得的獎勵為:
設當前輪次使用的獎券上的數值為 \(a_{1,2...n}\) 並且已經從小到大排序,那么
\(\large ans=\sum\limits_{\frac{n}{2}+1\leq i\leq n} a_i -\sum\limits_{1\leq i\leq \frac{n}{2}} a_i\)
也就是說,有 \(\large \frac{n}{2}\) 個數對答案的貢獻為 \(a_i\) ,另 \(\large \frac{n}{2}\) 個數對答案的貢獻為 \(-a_i\) , 並且所有負貢獻的數字都不大於正貢獻的數字。
可以發現,經過 \(k\) 次過程獲得的最大值,相當於我們在 \(n\) 種顏色的獎券上的數字中,每種顏色選取 \(k\) 個數字,並在其中選 \(\large \frac{nk}{2}\) 個數字,使其對答案的貢獻為正數 ,令另外一半的數字的貢獻為負數 ,然后求和即為答案。
不難發現如果我們獲得了這個取數問題的最優解,那么必然存在一種方案把這 \(nk\) 個數分成 \(k\) 組使得每組中有 \(n\) 個顏色兩兩不同的數,一半取負貢獻,一半取正貢獻,並且負貢獻的數都不大於正貢獻的數字。即有對應原問題的合法方案。
證明:如果不存在合法方案,那么對於任何一種方案,必然存在同一組數字中有一個取負貢獻的數大於一個取正貢獻的數。這時候交換一下它們的符號就可以獲得一個更優的解,所以如果取得了最優解的取數方案,必然有一個對應了原問題的合法方案。
取數問題的貪心:先默認都取負數,然后再貪心的做 \(\large \frac{nk}{2}\) 次把負數換成正數的操作即可。
然后我們考慮如何構造方案。
遞歸構造,考慮從當前的 \(nk\) 個數字中取出 \(n\) 個顏色兩兩不同的成為一組,保證它合法后再對剩下的 \(n(k-1)\) 個數字繼續構造。
從每種顏色中取出一個最大的正數和一個最小的負數並將正數和負數分別排序,枚舉正數和負數之間的邊界,\(two-pointers\) 的同時維護可用的正/負數數目即可。
因為正數和負數分別取到了最大和最小,所以在整個取數問題有對應方案的時候這個子問題必然能找到一組解,可以繼續遞歸。
由於遞歸的時候保證了選數方案一直是當前的最優解,所以一直都能保證當前的選數方案有一組對應原問題的解。
\(\Theta(nm\log n)\)
Day2
還沒有題目
