复健训练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}\),这样

\[ans=2^{m}\sum_{i=1}f_{n,i}\begin{Bmatrix}m\\i\end{Bmatrix} \]

第二类斯特林数可以用容斥算出。

如何求 \(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\) 号节点所在联通块的大小来计算,有:

\[g_{n,m}=h_{n,m}-\sum_{i=1}^{n-1} \sum_{j=0}^m \binom{n-1}{i-1}g_{i,j}\cdot h_{n-i,m-j} \]

同样的方法去计算 \(f\),我们通过枚举 \(1\) 号节点所在联通块的大小 \((i,j)\),剩下的部分就是 \(f_{n-i,m-j}\) ,即:

\[f_{n,m}=\sum_{i=1}^{n} \sum_{j=0}^m \binom{n-1}{i-1}g_{i,j}\cdot 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\)

  1. \(A\) 中选一个元素,将其减去 \(K\)
  2. \(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\),有:

\[\begin{aligned} ans=&\sum_{x=0}^{\min(n(K-1),m)}\binom{m-x+N-1}{N-1}\sum_{i=0}^{n}(-1)^{i}\binom{n}{i}\binom{x-ik+n-1}{n-1}\\ =&\sum_{i=0}^{n}(-1)^{i}\binom{n}{i}\sum_{x=ik}^{\min(n(K-1),m)}\binom{m-x+N-1}{N-1}\binom{x-ik+n-1}{n-1}\\ \end{aligned} \]

注意!

\[\sum_{x=0}\binom{a-x}{b}\binom{x}{d}=\binom{a+1}{b+d+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 \]

posted @ 2023-12-11 17:45  qwq_123  阅读(6)  评论(0编辑  收藏  举报