2021 ICPC 上海站

链接

链接

题解

B. Strange Permutations

一个长度为 $n$ 的置换形成了若干个有向环,那么在上面填排列后,环中边上相邻的点的数不能为 $i->i+1$。

直接枚举比较难,考虑容斥,记 $f(k)$ 表示选择了 $k$ 条边,使得每条边都满足 $i->i+1$ 的方案数,那么剩下 $n-k$ 个可以随便选,也就是 $(n-k)!$,答案就是 $\sum_{i=0}^n(-1)^if(i)(n-i)!$。

考虑 $f(i)$ 的求法,注意到一个整环不可能把所有边都选上以外,其他都可以。那么答案就是 $[x^i]\sum ((x+1)^{k_i}-x^{k_i})$。

分治FFT即可。

C. Strange Matrices

$n,m\le 8$,考虑轮廓线DP,对于每个点,会有三种状态:什么事都没有的,需要这一行给它的,需要同一列中的下面点给它的。那么DP时记录一下本行当前的状态,以及当前 $m$ 个数的状态就可以了。

时间复杂度 $O(nm3^{10})$。

D. Strange Fractions

可以发现,若 $(a,b)=1$,则 $(a^2+b^2,ab)=1$。那么 $p=a^2+b^2,q=ab$。随便做。

证明:$(a,b)=1$,则 $(a+b,a)=(a+b,b)=1$,则 $(a+b,ab)=1$,则 $(a^2+b^2,ab)=((a+b)^2,ab)=1$。

E. Strange Integers

排序以后贪心即可。

G. Edge Groups

简单树形DP。

H. Life is a Game

Kruskal重构树+树上倍增。

I. Steadily Growing Steam

简单DP,设 $f_{i,j,k}$ 表示处理到第 $i$ 个时,用了 $j$ 次,差值为 $k$ 的最大值。

J. Two Binary Strings Problem

记 $s_i$ 表示前缀和,$f(l,r)=1$ 当且仅当 $2s_r-r>2s_{l-1}-(l-1)$。

记 $t_i=2s_i-i$,按照 $t_i$ 排序,从小到大枚举,每次用bitset处理一下即可。

注意 $t_i=0$ 时的特判。

K. Circle of Life

打表找规律题。

M. Harmony in Harmony

神仙结论题,不太会…