D
求数列 $A$ 的合法排列数满足 $\forall i\in(1,n) |p_i-i|\not =k$
考虑到 $\not =$ 并不容易计算,使用容斥转化为 $=$
设 $\Gamma_c$ 表示包含已知的 $c对=$ 的排列数量(其他位置任意),而其他位置任意本质上就是全排列,即,对 $\Gamma_c$ 的贡献是 $(N-c)!$ 。 由此,根据广义容斥,最终答案为 $\displaystyle{\sum_{c=0}^N (-1)^c \times \Gamma_c}$
转化问题为能选出多少对 $(i,a_i)$ 使 $|a_i-i|=K$ 且所有的 $i,a_i$ 分别互不相同 ,设选出 $\gamma_c$ ,则 $\Gamma_c=\gamma_c \times (N-c)!$
则最终答案是
注意这里下标与键值的对应关系,像匹配的定义,且可以将其转化成二分图模型:$G=(V_1,V_2 ; E)$,其中 $V_1={L_1,L_2,…,L_N} \ ,\ V_2={R_1,R_2,…,R_N} \ ,\ E={(L_i,R_j)\mid \ |i-j|=k}$ ,求 $E$ 有多少个 $K$ 的匹配
再考虑图 $G$ 的性质:
- 每个顶点度数不超过 $2$ ——因为 $L_i$ 至多与 $R_{i-k},R_{i+k}$ 相连,对 $R_i$ 同理
- $G$ 为若干个链的并——证明没有圈:若有圈,则设最小者 $\min$ , 顶点式 $L_{\min}$ ,与之相连的节点 $L_{\min-k}$ 则不能在圈中,则度数不超过 $1$ ,与性质 $1$ 矛盾
所以求一个全由链组成的图 $G$ ,其大小为 $k$ 的匹配个数
考虑将这些链首尾相连,而连边则为强制不能加入匹配的坏边
问题转化到了链,$f_{i,j}$ 表示前 $i$ 条边,当前匹配大小为 $j$ ,且最后一条边没有匹配的方案数; $g_{i,j}$ 表示最后一条边匹配的方案数,转移时注意坏边以及相邻的边不能同时出现在匹配中
1 | const int N=4e3+100; |
E
给定红蓝两棵树和起点,两人分别在两棵树上交替移动,相遇后(所在节点编号相同)游戏结束,现在 $A(红)$ 想最大化游戏轮数,$B(蓝)$ 想最小化游戏轮数,求游戏轮数
对抗搜索!(雾
首先考虑无解情况,即后手永远抓不到先手
如果存在一条红边 $(u,v)$ 且满足 $u,v$ 两点在蓝树上的距离 $\geq 3$ ,且先手能跑到 $u,v$ 点中任意一个 且 该回合内没有被抓到,则无解
先假设有解情况,即,先手可以走的红边的两端点在蓝树上距离 $\leq 2$ ,那么对于点 $u$ ,其与根的距离分别为 $len_红,len_蓝$ ,若 $len_红\leq len_蓝$ 那么红方一定不会走到 $u$ , 即红方每一次移动都要保证 $len_红>len_蓝$
$\therefore$ $\text{dfs}$ 一次找无解与满足 $len_红>len_蓝$ 的点,答案就是 $2\times \max len_红$ ,即最优决策是走到 $\max len_红$ 并原地等待
1 | const int N=2e5+5; |
F
对于一颗树 $T=(V,E)$ ,对于非空子集 $S\subseteq V$ , 定义 $f(S)$ 表示包含 $S$ 中所有点的连通块大小的最小值,即,$f(S)=min{|U| \ \mid s\subseteq U\subseteq V,T |U|是连通图}$ ,对 $K:1\rightarrow n$ 分别求出 $\sum_{S\subseteq V,|S|=K} f(S)$ 的值
考虑每个点 $x$ 对答案的贡献,即总方案数减去不合法方案数
设 $cnt_i$ 为子树大小为 $i$ 的子树个数
发现第二项是减法卷积,考虑 $NTT$
1 | const int N=8e5+100; |