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)\)

posted @ 2019-08-21 09:59  cjoier_Itst  阅读(404)  评论(5编辑  收藏  举报