第一次

我觉得比给的题解清晰。

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}$。
posted @ 2023-07-20 20:17  Jijidawang  阅读(4)  评论(0编辑  收藏  举报  来源