AGC039

Contest Page

A

sol 对于一个长度为$L$的相同字符段,显然要花费$\frac{L}{2}$次操作才能使得相邻不相同。于是只需要分类讨论一下首尾字符是否相同,算出每种字符、每种长度的连续字符段出现了多少次即可。

B

sol 首先当图不是二分图的时候肯定无解,否则可以发现答案的上界是图上两点的最短路最大值,且不难构造出达到答案上界的方案。于是bfs/Floyd求出这个值即可。

C

sol 可以把题目转换成:每一次把该数的最低位异或$1$放到最高位上,问要多少次才能够与原数相同。这样看来每一个数经过$2N$次一定会回到原数。那么哪些数操作次数少于$2N$?手玩可以发现:一个数能表示成$AA'AA'...A$的循环结构,其中$A$是$01$串,$A'$是其所有位异或$1$得到的串。这样的数只需要$2|A|$次操作。注意分成的段数要是奇数,否则仍然需要$2N$次操作。

枚举$A$的长度$l$计算有多少个串循环节长度是$l$的约数。因为$A$确定了串就确定了,同时相当于枚举串的较高位,所以至多只有一个串需要判断是否小于等于$S$。最后容斥算多少个串循环节恰好是$l$。复杂度$O(Nd(N))$。

D

sol 对于圆上三个点$A,B,C$,取弧$AB,BC,AC$的中点$D,E,F$,可通过圆周角定理证明$\Delta DEF$的垂心与$\Delta ABC$的内心重合。

考虑$\Delta DEF$,根据欧拉线,因为$\Delta DEF$的外心是$O(0,0)$,重心是$(\frac{x_D+x_E+x_F}{3} , \frac{y_D+y_E+y_F}{3})$,所以垂心就是$(x_D+x_E+x_F,y_D+y_E+y_F)$,这样$D,E,F$三个点贡献独立。枚举$AB$,考虑其两段弧的中点答案的贡献。

E

sol 先枚举一个点$i$,$(1,i)$连边。那么接下来的问题就是$[2,i) \cup (i,2N]$中的点互相连边的问题。

考虑跨过点$i$的边,它们的两端点有单调性,即左半部分编号递增时,右半部分编号递减。枚举跨过点$i$的在左半部分编号最小的边$(j,k)$,那么剩余的点,要么先与$j$相交、要么先与$i$相交、要么先与$k$相交,且这样的点在编号上均分布为一段区间。枚举与$j$相交的点中最大的编号$p$、与$k$相交的点中最大的编号$q$,那么可以分别递归到$[2,j) \cup (j,p]$、$[p+1,i) \cup (i,q-1]$、$[q,k) \cup (k,2N]$的三个子问题。

用记搜实现计算过程,虽然状态数$O(N^3)$但有用状态不多。复杂度$O(N^7)$。

F

sol 考虑一个朴素的DP:设$f_{i,j,k}$表示矩阵$A$有$i$行$j$列最小值$\leq k$的方案数。注意到$N,M,K \leq 100$,但是这样的状态在转移时无可避免的要同时枚举$i,j$的增量,因为它们的影响都在$A$上,所以转移的位置有交。

对问题做一个小转化,可以发现权值相当于是额外填了一个矩阵$B$满足$B$的每个位置小于等于$A$中对应位置的行列最小值,那么权值相当于是$B$的方案数。发现对于$B$的限制等价于$B$的行列最大值小于$A$的对应行列最小值。

此时我们有了两个矩阵$A,B$,考虑将状态一个放$A$上一个放$B$上:设$f_{i,j,k}$表示$A$中$i$列$\leq k$、$B$中$j$行$\leq k$的$A,B$矩阵填法总数。

若确定$B$中某行最大值为$k+1$,则矩阵$A$上对应行确定了列最小值的位置可以填入$\geq k +1$的数;在矩阵$B$上对应行没有确定列最小值的位置可以填入$\leq k+1$的数,且要保证至少有一个位置填$k+1$;

若确定$A$中某列最小值为$k+1$,则矩阵$A$对应列确定了行最大值的位置可以填入$\geq k+1$的数,且至少有一个位置填$k+1$;在矩阵$B$对应列没有确定行最大值的位置可以填入$\leq k+1$的数。

可以发现$A,B$两个矩阵的填入之间是无交的,所以将这两者的转移看成两个阶段即可。预处理转移系数,复杂度$O(NMK(N+M))$

猜你喜欢

转载自www.cnblogs.com/Itst/p/11706719.html