CF1528
CF1528
A
可以发现答案只会在 \(L_i/R_i\) 处取到。
B
可以发现递推式:\(f_i=S_{i-1}+d_i\)
C
对第一棵树 dfs,在第二棵树上贪心:能加入则加入,否则去替换其一个祖先。
D
假设能够在时刻 \(i\) 访问 \(v\),那么可以在时刻 \(i+t\) 访问 \(v+t\bmod n\),枚举起点,然后跑一个 \(\mathcal O(n^2)\) 的 dij 即可,这里计算某个点的最小出边需要单独处理一下。
E
可以发现答案只有 3 类:外向树,内向树,一个外向树和内向树拼在一起。
第一类和第二类的主体是每个点儿子数不超过 \(2\) 的外向树方案数:转移由 burnside 定理给出:\(f_i=f_{i-1}+\frac{1}{2}(S_{i-1}^2-S_{i-2}^2+f_{i-1})\)
计算答案的时候和烷烃计数一致,枚举 \(3\) 种情况转移即可,乘以 \(\frac{1}{6}\)(由于根节点的 deg 可能为 \(3\))
外向树和内向树拼起来的时候,可以发现有多个点可以作为分界点,但合法的方案一定满足内向树的部分根节点度数为 \(2\),且外向的边的度数为 \(1\),这个部分的贡献为 \((f_{i}-f_{i-1})(f_{n-i-1}-1)\)(减去单独一条链的情况)
F
我们构造一个长度为 \(n\) 的序列(一排座位),对于每个 \(a_i\),令第 \(i\) 个人走到 \(a_i\),然后往后移动至第一个空座位。(CF838D)
我们可以发现这样的一个策略和一个合法的序列是双射,添加一个辅助节点,并连接成一个环,可以发现只要 \(n+1\) 为空就有合法的方案,因此答案为 \((n+1)^{n-1}\)
接下来我们有一个重要观察:任意一个非法的方案都可以映射到一个合法的方案。
这是因为对于任意一个非法的方案,设 \(x\) 为其抵达的空位置,则令 \(a_i\leftarrow (a_i+(n+1)-x)\mod (n+1)+1\) 可以实现将其逆时针旋转 \(x\) 位的结果。
换而言之,我们直接对 \(a_i\in [1,n+1]\) 的序列进行计数,然后将答案乘以 \(\frac{1}{n+1}\) 即为答案。
现在,问题已经相当明朗了,答案就是: