省选模拟47

A. 老夫

  考虑按照$c$递增的顺序查找答案,那么发现需要进行的操作是区间加下标,全局最值。

  直接上分块凸包就行了。

B. 打算

  考虑将坐标(x,y)转化成(x+y,x-y),这样就将两维独立了出来。

  对于每一维分别考虑,那么每一个限制都可以被表达成$a*L+b=x_i$的形式,$x_i$表示$i$时刻的坐标,$L$表示一个周期的位移。

  那么考虑按照时间排序,那么由两个时间相邻的限制可以解出$L$的范围,将所有取交就能得到一个合法的$L$,然后就能递推出每一个时刻的坐标。

  注意在解的区间中不一定全部合法,长度还和总时间的奇偶性有关。

C. 报复社会

  假如字符集大小为$2$,设$f_i=cnt_{i,a}-cnt(i,b)$。

  那么一个字符串合法的条件是,所有的$f_i$属于$[-k,0],[-k+1,1],[0,k]$等区间中。

  那么枚举这个区间的左端点就可以直接dp出来,并且可以显然的用矩阵优化。

  然而这样会使一些方案算重,也就是$[-k+1,0]$等区间被算了两次,所以要减掉。

  对于更小的区间可以发现刚好容斥掉了,所以不用考虑。

  对于字符集大小为$3$的情况,可以类似的考虑,用8种情况来容斥。

  然后发现转移系数只和三个区间左端点的和或差有关,所以可以预处理转移系数。

原文地址:https://www.cnblogs.com/hzoi-cbx/p/12513463.html