C
容易发现一次操作是循环移位后最高位取反。
可以证明 \(k\) 次操作可以让 \(X\) 回到原始值,当且仅当 \(k\) 是偶数且 \(X\) 由奇数个长度为 \(\frac k 2\) 的串,不断取反并连接形成。这个结论打下表就发现了,然后证明也不是很难。知道了这个结论后就没啥难的了。
D
我求你了别在主线正赛出这种题,我什么都会做的。
E
如果对这个组合对象比较熟悉,应该会知道一个定理:交叉图为树的弦图数量,恰好是满三叉树的数量。上面这个等式和这个题的分析方法是基本一致的。
off topic:Fuss-Catalan 数。有 \(m\) 个非叶子节点,每个非叶子节点恰好有 \(k\) 个儿子,的树数量 \(C_m^{(k)}=\frac 1{(k-1)m+1}\binom{km}{m}\),满足递推关系 \(C_m^{(k)}=\sum_{a_1+\dots+a_k=m-1}C_{a_1}^{(k)}C_{a_2}^{(k)}\cdots C_{a_k}^{(k)}\)。
考虑设 \(f_{l,r,k}\) 表示区间 \([l,r]\) 的点中,有且仅有 \(k\) 连了一条到区间外的边,其他点在内部两两配对的方案数。显然不会有两条跨过 \(k\) 的相交线,且必须有至少一条,否则 \(k\) 的左右两边不连通。那么我们枚举最终答案中最靠上的一条,设为 \((x,y)\),那么内部的点一定可以分为三个区间,设左区间为 \([l,p]\),有且仅有 \(x\) 连到区间外面;中区间为 \((p,q)\),有且仅有 \(k\) 连到区间外面;右区间为 \([q,r]\),有且仅有 \(y\) 连到区间外面。于是我们以 \(n^4\) 的枚举量递归了子问题。实际上,这种分析方式和开头提到的计数问题的分析方式完全一致。复杂度是 \(\mathrm O(n^7)\) 的,常数极小,可以通过,用一些简单的分步转移可以做到 \(\mathrm O(n^5)\)。
F
有两种做法。
第一种是容斥做法,我们在确定 \(x_i=\min_{j=1}^m a_{i,j},y_i=\min_{j=1}^n a_{j,i}\) 后,可以确定矩阵的权值为 \(\prod_{i=1}^n\prod_{j=1}^m\min(x_i,y_j)\),还需要乘上合法的矩阵个数。我们进行组合意义的转化:计算满足 \(A_{i,j}\ge\max(x_i,y_j),B_{i,j}\le\min(x_i,y_j)\) 且对于每个 \(i\) 至少有一个 \(A_{i,j}=x_i\) 和一个 \(A_{j,i}=y_i\) 的矩阵二元组 \((A,B)\) 个数,可以看做 \(A\) 是一个任意合法矩阵,而 \(B\) 是 \(\prod_{i=1}^n\prod_{j=1}^m\min(x_i,y_j)\) 拆出的组合意义。我们发现第二条限制很难看,对它进行容斥,容易发现答案为 \(f(x)-f(x+1)\) 状物,只需钦定 \(a\) 行 \(b\) 列,将这些行的 \(x\) 限制加一,这些列的 \(y\) 限制加一,带上 \((-1)^{a+b}\) 的容斥系数即可。注意这个容斥只对 \(A\) 做,\(B\) 的计算过程不需要改变。进行容斥之后,我们就可以 dp 了,设 \(f_{t,i,j}\) 表示填了 \([1,t]\),确定了 \(i\) 行 \(j\) 列的所有方案的一坨系数的和。我们分步转移,先转移没有容斥限制的行/列,再转移有容斥限制的,因为本质上有容斥限制的应该和 \(t+1\) 同一批转移。转移系数考虑与当前行(列同理)相交的所有列,如果一个列的 \(y_j\) 已经在之前被确定了,那么对于这个列和当前行的交点 \((i,j)\),我们可以知道 \(\max(x_i,y_j)=t\),于是 \(A_{i,j}\) 的取值范围也就被确定了,需要带上一个 \((K-t+1)\) 的系数;否则一个列的 \(y_j\) 还没有确定,那么我们能确定的是交点 \((i,j)\) 的 \(\min(x_i,y_j)=t\),于是 \(B_{i,j}\) 的取值范围被确定了,需要带上一个 \(t\) 的系数。容易发现,这些系数的乘积只需要知道之前填的列的数量即可确定。于是就做完了。
第二种做法。暂时不写了。
