复健训练2
ABC327
手速场...被E的罚时爆杀了...
但确实留下了深刻的教训:
- dp的边界值一定要设计好!!
G确实是有想法,但细节部分确实没想好。
G - Many Good Tuple Problems
题面
对于一对长度均为 \(M\) 且元素值在 \([1,N]\) 之间的序列 \((S,T)\),定义其为好的当且仅当:
- 存在一个长度为 \(N\) 的 \(01\) 序列 \(X\),使得其满足如下条件:
- 对于任意 \(i\in [1,M]\),有 \(X_{S_i}\neq X_{T_i}\)。
给定 \(N,M\),求在所有可能的 \(N^{2M}\) 种长度均为 \(M\) 且元素值在 \([1,N]\) 之间的序列对 \((A,B)\) 中,有多少对序列是好的。
对 \(998244353\) 取模。
题解
先把问题拆分,我们希望找到"\(n\) 个有标号点,\(m\) 条边的二分图的数量",记为 \(f_{i,j}\),这样
第二类斯特林数可以用容斥算出。
如何求 \(f_{n,m}\) ?枚举左边有 \(i\) 个点,右边就是 \(n-i\) 个,答案就是 \(\binom{n}{i}\binom{i(n-i)}{m}\)?
但这样是不对的,因为对于一个连通块,左右调换一下是等价的,而我们又不知道当前 \(f_{n,m}\) 有几个连通块。
不过我们可以求出 \(n\) 个点联通的方案数 \(g_{n,m}\),这样就可以用 \(\frac{g_{n,m}}{2}\) dp出 \(f_{n,m}\) 。
求 \(g\) 的时候需要用一种容斥dp。
计 \(h_{n,m}=\sum_{i=0}^n\binom{n}{i}\binom{i(n-i)}{m}\) ,表示所有情况,减去不合法的情况。
若图不连通,那么其一定分成两个部分,包含 \(1\) 的连通块和其他连通块。因此我们可以通过枚举 \(1\) 号节点所在联通块的大小来计算,有:
同样的方法去计算 \(f\),我们通过枚举 \(1\) 号节点所在联通块的大小 \((i,j)\),剩下的部分就是 \(f_{n-i,m-j}\) ,即:
同样的题见ABC253 Ex。
启发
- 算是一种新的dp类型?总结了一下。
ABC328
第一次赛时无罚时AK ABC,很开心。
-
E 的暴力遍历所有生成树可以做到 \(O(n!)\) ,即每次枚举一个新的点连入当前的生成树。
-
F 复习了带边权的并查集
-
G 饶了挺多弯的,应该注意到下面的模型:
-
左边 \(n\) 个点对应右边 \(n\) 个点的 \(n!\) 种对应方案问题可以使用状压,
即设 \(S\) 表示右边的前 \(|S|\) 个点对应了左边 \(S\) 的点。
-
ARC 160
过了 A,B,C题,B题的整除分块还因为式子列错了搞了半天...
D - Mahjong
题面
找到可以通过以下两种操作,使得长度为 \(N\)、元素之和为 \(M\) 的数列 \(A\) 全为 \(0\) 的 \(A\) 的个数,再取模 \(998244353\)。
- 在 \(A\) 中选一个元素,将其减去 \(K\)。
- 在 \(A\) 中选取长度为 \(K\) 的子串,子串中每个元素减去 \(1\)。
\(N,M\le 2000,M\le 10^{18}\) 。
题解
首先我们反着来考虑加的操作。
然后可以想到把操作1和操作2分开考虑,但是这样会算重,也就是会有一种最终局面是可以由多组方案得到的。
考虑什么时候会重复,要注意到一个结论:
如果对同一个子串操作2的执行次数 \(< k\) ,那么每一种最终局面就只由一种方案得到。
粗略证明一下:对于一个最终局面,设 \(b_i=a_i \bmod k\) ,然后从 \(b_1\) 遍历到 \(b_n\) ,考虑每一个长度为 \(k\) 的子串进行了多少次操作2,这样是可以唯一确定每一个子串进行操作2的次数,并且这个次数肯定是 \(<k\) 的。
然后我们枚举进行了多少次操作2,设 \(m=\frac M K,n=N-k+1\),有:
注意!
为啥?左边的式子可以理解为:
有 \(a\) 个球,我枚举一个分界点,左边选 \(b\) 个球,右边选 \(d\) 个球。
如果没有枚举分界点 ,那么就是 \(\binom{a}{b+d}\) ,有个分界点,那么我们就加上一个球,一共选 \(b+d+1\) 个球,前 \(b\) 个球是左边的,中间那个球是分界点,后面的 \(d\) 个球是右边的。
不过!完全不用上面这些东西!我们不用把操作1和操作2分开考虑,直接抽象为下面的问题:
有 \(m\) 个无标号的球,有 \(n+N\) 个有标号的盒子,其中有 \(n\) 个盒子最多只能放 \(k-1\) 个球,问方案数。
发现两个式子是等价的...
启发
-
\[\sum_{x=0}\binom{a-x}{b}\binom{x}{d}=\binom{a+1}{b+d+1} \]
-
对于算重的情况要考虑一下究竟可以不可以去重。
ARC162
VP时做了ABC,D题做了好久...
-
注意一下这个模型:
\(n\) 个点,统计 以 \(1\) 为根,第 \(i\) 个节点有 \(d_i\) 个儿子 的树的方案数。
我们考虑第 \(2\) 个点儿子是什么,共有 \(\binom{n-2}{d_2}\) 个方案,然后第 \(3\) 个点有 \(\binom{n-2-d_2}{d_3}\) 个,一共是:
\[ans=\dfrac{(n-2)!}{d_2!\cdot d_3!\cdots d_{n}!\cdot (d_{1}-1)!} \]还可以用prufer序列解释,也就是有 \(n-2\) 个数,其中有 \(d_i\) 个 \(i\) ,一共有 \(\dfrac{(n-2)!}{d_2!\cdot d_3!\cdots d_{n}!\cdot d_{1}!}\) 种,然后本题中要求是有根树,所以 \(\times d_1\) 表示根。
ARC166
VP时过了ABCD(话说为什么D题有2200啊...)
- \(2|x\to x\bmod 2=0\)
E题有奇怪做法,很神奇,复习了 \(ax+by=c\) ,即exgcd。
- \(ax+by=c\) 的特解。
因为 \(\gcd(a,b)=\gcd(b,a\bmod b)\) ,即 \(bx+(a\bmod b)y=c\) 也有解,即:
\[\begin{aligned} ax_1+by_1&=bx_2+(a-(\lfloor\frac{a}{b}\rfloor\times b))y_2 \\ &=ay_2+b(x_2-\lfloor\frac{a}{b}\rfloor y_2) \end{aligned} \]所以得到了 \((x_2,y_2)\) 后,可以推出 \(x_1=y_2,y_1=x_2-\lfloor\frac{a}{b}\rfloor y_2\) 。
- \(ax+by=c\) 的通解。
\[x=x_0+\frac{b}{\gcd(a,b)}t\\ y=y_0-\frac{a}{\gcd(a,b)}t \]