第一次
我觉得比给的题解清晰。
A
设 $f_{x,y}$ 表示选 $x$ 个数,乘积模 $mod$ 等于 $y$ 的方案数,则有$f_{a+b,i}=\sum\limits_{j\times k\bmod mod=i}f_{a,j}\times f_{b,k}$,我们记为 $f_{a+b}=f_{a}\oplus f_b$。
则 $f_{2^i}=f_{2^{i-1}}\oplus f_{2^{i-1}}$ 都可以处理出来,设 $m=\sum\limits_i 2^i$,则 $f_m=\bigoplus\limits_{i}f_{2^i}$。
则答案为 $\dfrac{\sum x}{n^m}=\dfrac{\sum\limits_{i=0}^kif_{m,i}}{n^m}$。
B
$t=0$
换根 DP 板子,没啥好说的吧……
设 $s_x=\sum\limits_{i\in\text{subtree}(x)}a_i,f_x=\sum\limits_{i\in\text{subtree}(x)}a_id(x,i)$,则 $s_u=a_u+\sum\limits_{v\in\text{son}(u)}s_v,f_u=\sum\limits_{v\in\text{son}(u)}f_v+s_v$。
设 $S=\sum\limits_{i=1}^na_i,g_x=\sum\limits_{i=1}^na_id(x,i)$,则$g_u=f_u+g_{fa_u}-f_u-s_u+S-s_u=g_{fa_u}+S-2s_u$。
则 $b=g$。
$t=1$
我们知道 $g_u-g_{fa_u}=g_{fa_u}+S-2s_u-g_{fa_u}=S-2s_u$,即 $2s_u=S-g_u+g_{fa_u}$。
我们还知道 $b_1=\sum\limits_{i=2}^ns_i$,则 $2b_1=\sum\limits_{i=2}^n2s_i=\sum\limits_{i=2}^nS-g_i+g_{fa_i}=(n-1)S+\sum\limits_{i=2}^ng_{fa_i}-g_i$,
即 $S=\dfrac{2b_1-\sum\limits_{i=2}^ng_{fa_i}-g_i}{n-1}$,进而 $s_u=\dfrac{S-g_u+g_{fa_u}}2$。
则 $a_u=s_u-\sum\limits_{v\in\text{son}(x)}s_v$。
C
$typ=0$
枚举向左走的步数 $i$,则向右走的步数等于 $i$,向上走的步数和向下走的步数等于 $\dfrac{n-2i}2$,
则向左走 $i$ 步的方案数为 $\dfrac{n!}{(i!)^2(\dfrac{n-2i}2!)^2}$,答案即为 $\sum\limits_{i=0}^{\frac n2}\dfrac{n!}{(i!)^2(\dfrac{n-2i}2!)^2}$。
$typ=1$
把向右走看成入栈,把向左走看成出栈,答案即为长度为 $\dfrac n2$ 的出栈序列种类数,即 $C_{\frac n2}={n\choose\frac n2}-{n\choose\frac n2-1}$。
$typ=2$
这一档可以直接 DP 的……设 $f_{i,j,k}$ 表示走 $i$ 步到 $(j,k)$ 的方案数,然后把第一维滚掉就行。
另一种做法是设 $f_i$ 表示走 $i$ 步回到原点的方案数,枚举第一次回原点时走过的步数 $j$,则 $f_i=\sum\limits_{j=2}^i[j\bmod 2=0]C_{\frac j2-1}\times f_{i-j}$。
前 $j$ 步中不能走回原点,所以前 $j$ 步有 $C_{\frac j2-1}$ 种方案,后 $i-j$ 步有 $f_{i-j}$ 种方案。
$typ=3$
枚举横向走的步数 $i$,则纵向走的步数为 $n-i$,方案数为 $\sum\limits_{i=0}^n[i\bmod 2=0]{n\choose i}C_{\frac i2}C_{\frac{n-i}2}$。
D
设 $f_{i,j,k}$ 表示填了 $[1,i]$,有 $j$ 段缺口,相邻 $\max$ 之和为 $k$ 的方案数。
考虑把 $i+1$ 填进去:
- 填补一段缺口(eg:$102\to132$),有 $j$ 种填法,转移到 $f_{i+1,j-1,k+2(i+1)}$。
- 填到缺口两侧(eg:$1002\to1302$,$1002\to1032$),有 $2j$ 种填法,转移到 $f_{i+1,j,k+i+1}$。
- 填到缺口中间(eg:$10002\to10302$),有 $j$ 种填法,转移到 $f_{i+1,j+1,k}$。
- 填到两侧(不形成缺口)(eg:$0012\to0312$,$1200\to1230$),有 $2$ 种填法,转移到 $f_{i+1,j,k+i+1}$。
- 填到两侧(形成缺口)(eg:$0012\to3012,1200\to1203$),有 $2$ 种填法,转移到 $f_{i+1,j+1,k}$。