2023.8.9 AT practise
ARC063E
首先树是二分图。
二分图同侧的点奇偶性必须相同,异侧必须不同。
排掉不合法之后。
然后我们处理出若只考虑子树,一个点的取值范围。
若一个点没法取值,也排掉。
然后从根开始构造即可。
ARC062F
牛题。
首先求点双。若不在点双里面的边,贡献是 \(K\).
考虑一个点双,若这个点双是纯环,那么我们直接用 Burnside 来求。
即 \(\dfrac{1}{n}\sum_{1\le i\le n} K^{\gcd(i,n)}\)。
其中 \(\dfrac{1}{n}\) 是置换总数,
\(K^{\gcd(i,n)}\) 代表对于第 \(i\) 个置换,若置换完要一样,可以随便填 \(\gcd(i,n)\) 个数。
若点双不是纯环,那么可以证明可以任意互换两条边的颜色。笔者难证。
那么对于每种颜色填的数目相同的两种方案,是本质相同的。
那么就是 \(K\) 种颜色放进 \(n\) 的相同的盒子,插板法是 \(C(k-1+n,k-1)\).
ARC064F
一个偶数长度的回文串,其贡献是 \(n/2\).
因为如 abba
,baab
是跟其本质相同的。
奇数则贡献是 \(n\).
若一个回文串有循环节,那么贡献是 \(n/循环节个数\)
因为如 abaabaaba
,只要循环置换 \(3\) 次,就跟原串相同了。
那么我们枚举循环节长度,计算出含有这个循环节的字符串个数 \(cnt_i\)。
\(cnt_i\) 的计算是 \(K^{(i+1)/2}-\sum _{j|i} cnt_j\).
然后计算贡献即可。
ARC065E
首先使用“曼哈顿转切比雪夫”。具体是对于一个点 \((x,y)\),将其转化成 \((x+y,x-y)\),
这样原图的曼哈顿和新图的切比雪夫距离都是相同的。
不难发现对于指向 \(P(i,j)\),\(dis(i,j)=dis(A,B)\).
现在我们只需要求出从 \(A\) 能到达的点,把这些点能到达的点个数加和即可。
若 \(dis(i,j)=dis(A,B)\),那么 \(j\) 必在 \(i\) 为中心边长为 \(2 dis(A,B)\) 的正方形的边上。
我们分横向和竖向考虑、
我们用 STL pair<int,int>
保存每个点,将其排序。
枚举每个点 \(i\),二分查找出这个点能到达的点的区间 \([L,R]\).
然后令 \(cnt_i\) 表示 \(i\) 能到达的点个数,\(cnt_i\leftarrow cnt_i+(R-L+1)\)
现在要把 \([L,R]\) 每个点都在并查集中与 \(i\) 都合并,如何?
考虑查分,我们先把 \(L,i\) 合并,然后令差分数组 \(d_L\leftarrow d_L+1,d_R \leftarrow d_R-1\)。
最后只需处理掉这个差分即可。
注意在横向和竖向处理的时候注意正方形角上的点会重复。
最后只需要处理和 \(A\) 在一个联通块的点即可。