2023.8.8 AT practise
ARC061E
首先有个套路的想法:以边作点,然后前后缀优化建图,但是这样是麻烦的。
我们重新考虑:
我们发现,如果把同一个公司的联通块处理一下,最短路径其实就是其经过联通块个数。
我们把在同一个联通块的点互相建边,权值为 \(1\)。
但是这样是不优的,边数会被卡成 \(n^2\)。
我们考虑对每个联通块建立虚点,对一个联通块中的点,向对应的虚点建 \(0.5\) 权值的边即可。
ARC061F
发现所有的牌的方案刚好对应一种出牌顺序。
于是我们只需处理出牌的序列即可。
\(A\) 获胜的条件是序列中含有 \(n_1\) 个 \(a\),且最后一位是 \(a\).
而且不能含有 \(n_2+1,n_3+1\) 个 \(b,c\).
我们枚举 \(k\),表示出牌序列有 \(k\) 个 \(b,c\).
方案数是 \(\sum_{k-n2\le j \le n3}C(k,j)\),设其为 \(s(k)\).
\(s(k)=\sum_{k-n2\le j \le n3}C(k-1,j-1)+\sum_{k-n2\le j \le n3}C(k-1,j)\)
已知 \(s(k-1)=\sum_{k-n2-1\le j \le n3}C(k-1,j)\).
那么 \(s(k)=2 s(k-1)-C(k-1,k-n2-1)-C(k-1,n3)\).
那么答案是 \(\sum_{0\le k \le n2+n3}3^{n2-n3-k}\cdot C(n1-1+k,k)\cdot s(k)\).