Codeforces Round #580 (Div. 1) A-E


Contest Page

A Tag:構造

將$a_i$看做一個無窮數列,$i > 2n$時$a_i = a_{i - 2n}$.設$sgn_i = \sum\limits_{j=i+1}^{i+n}a_i - \sum\limits_{j=i}^{i+n-1}a_i = a_{i+n} - a_i$,那么答案要滿足:$\forall j \leq k , \sum\limits_{p=j}^k sgn_p \in [-1,1]$.且$\forall i , sgn_i \neq 0$.

上述條件等價於\(i>1\)\(sgn_i = -sgn_{i-1}\).因為\(sgn_{n + 1} = sgn_1\),所以當\(2 \mid n\)的時候會出現\(sgn_{n+1}=0\)的矛盾,即無解;只有當\(2 \not\mid n\)的時候可以通過\(sgn\)構造一組合法解.

B Tag:位運算、 最小環

當某種數位出現了至少$3$次時答案為$3$,否則考慮一個圖,圖上每一個點表示一個位置,將具有相同數位的位置之間連邊,圖上至多只有$60$條邊.使用bfs/Floyd求最小環即可(一定注意不要用dfs樹求最小環).
C Tag:構造、交互

詢問滿足條件的曼哈頓距離為$2$的兩個位置可以詢問出這兩個位置是否相同,那么我們可以通過類似並查集的方式,通過$n^2-2$次詢問出所有橫縱坐標之和為偶數的位置的值和所有橫縱坐標之和為奇數的位置兩兩之間是否相同.

接下來考慮使用一次詢問詢問出某一個橫縱坐標之和為奇數的位置的值.考慮最簡單的:考慮找到兩個曼哈頓距離為$4$的可詢問位置$(x_1,y_1),(x_2,y_2)$,如果當$arr_{1,2}=0$和$arr_{1,2}=1$返回值不同(這個東西可以自己寫一個模擬進行計算),就對$(x_1,y_1),(x_2,y_2)$進行詢問,就可以得到$arr_{1,2}$的值,進一步得到所有的值.

所以仍然不知道為什么一定會存在這樣的$(x_1,y_1),(x_2,y_2)$...
D Tag:構造

首先,給定一棵$n$個點有根樹和集合$A = \{a_1,a_2,...,a_{n-1}\}$,一定存在一個給邊非負權值的方案使得其他$n-1$個點到達根的距離構成的集合$=A$.構造方式:設$solve(x , S)$表示在做$x$的子樹,且子樹內的點到子樹根的距離為集合$S$.設它的所有兒子為$a_1,a_2,...,a_p$,它們的子樹大小為$x_1,x_2,...,x_p$,則把集合$S$分成$S_1,S_2,...,S_p$滿足$|S_i| = x_i$,對於每一個$i$令$w_{x,a_i} = \min\{S_i\}$,將所有$p \in S_i \rightarrow p - \min\{S_i\}$然后遞歸進入$solve(a_i , S_i)$即可.

那么考慮如果存在一個點$x$使得$x$的子樹可以分為兩個部分,滿足這兩個部分的$size+1$的乘積$\geq \lceil \frac{2n^2}{9} \rceil$,就可以直接構造出一組合法方案了.

那么考慮重心.因為重心滿足任一兒子的子樹大小$\leq \frac{n}{2}$,所以考慮每次將最小的兩個子樹合並,直到剩下兩個子樹,那么兩個子樹的大小定$\geq \lceil \frac{n - 1}{3} \rceil$.不難證明兩棵子樹的$size+1$的乘積$\geq \lceil \frac{2n^2}{9} \rceil$,這樣就可以構造方案了.
E Tag:期望、莫比烏斯反演

設$f_i(s) = [s_{1,i} = s_{n-i+1 , n}]$,則我們要求$E((\sum f_i(s))^2) = \sum\limits_i E(f_i^2(s)) + \sum\limits_{i \neq j} E(\sum f_i(s) f_j(s))$

第一部分:$E(f_i^2(s)) = E(f_i(s)) = k^{-i}$,原因是對於$\forall p \in [n-i+1,n]$需要滿足$s_p = s_{p - (n-i)}$,每一個都有$\frac{1}{k}$的概率發生,而其余沒有要求.

第二部分:$E(f_i(s)f_j(s)) = k^{\max\{n-i+n-j-n , \gcd(n-i,n-j) \}-n}$.證明如下:

先考慮當$f_i(s) = 1$,原串有一個長度為$n-i$的周期.那么原串有多個周期時,考慮將由於周期性必須相等的兩個字符之間連邊,如果形成了$t$個連通塊,則這一部分的期望就是$k^{t-n}$.

當$n-i+n-j \leq n$的時候由眾所周知的定理可以得到原串有一個$\gcd(n-i,n-j)$的周期,所以期望為$k^{\gcd(n-i,n-j)-n}$.

當$n-i+n-j > n$,設$i$$<$$j$,有$j < n-i , n-j < n-i$.考慮$n-i$周期后原串有$n-i$個連通塊.給連通塊標號為$0,1,2,...,n-i-1$.然后加入周期為$n-j$的邊,考慮連通塊減少多少.對於其中每一條邊,如果連上同一連通塊那么連通塊數量不會減少,否則減少$1$,那么答案就是$n-i-j+\text{在同一個連通塊之間連邊的邊數量}$.




對於\(\equiv x \mod \gcd(n-i,n-j)\)的所有數必須要滿足這些點都連了一條邊才能存在一條邊連在一個連通塊內.因為連了\(j\)條邊,所以如果\((n-i) - j = (n-i) + (n-j) - n \geq \gcd(n-i,n-j)\),那么不可能存在這樣的\(x\),也就是有\((n-i)+(n-j)-n\)個連通塊;否則會有\(\gcd(n-i,n-j) - ((n-i) + (n-j) - n)\)條邊連在同一個連通塊內,也就是有\(\gcd(n-i,n-j)\)個連通塊.



這樣上述定理得證.注意到\(E(f_i^2(s)) = k^{\max\{n-i+n-i-n , \gcd(n-i,n-i) \}-n}\),可變為計算\(\sum\limits_{i,j \in [1,n-1],d = \gcd(i,j)}([i+j-n \geq d]k^{i+j-2n} + [i+j-n < d] k^{d-n})\),推式子可以推成:



\(\sum\limits_{d \in [1,n-1]} \sum\limits_{p \in [1, \frac{n-1}{d}]} \mu(p) \sum\limits_{i,j \in [1,\frac{n-1}{dp}]}([i+j > \frac{n+d-1}{dp}]k^{dp(i+j)-2n}+[i+j \leq \frac{n+d-1}{dp}] k^{d-n})\)



枚舉\(dp\),后綴和預處理\(f_x = \sum\limits_{q=x}^{\frac{2n-2}{dp}} k^{dpq-2n} \sum\limits_{i,j \in [1,n-1] , i + j = q}1\),然后枚舉\(d\)就可以\(O(1)\)算答案.復雜度\(O(nlogn)\)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM