A
对于棋盘上的一条路径,花费为连续障碍的个数
B
将(a_i-1),则只有((0,1,2))三个数
显然,若序列中存在(1),则答案仅可能为(0/1),那么考虑在模(2)的条件下进行,则每个数对答案的贡献可以表示为组合数
若序列中不存在(1),即仅有(0,2),将(2)看作(1),若最终答案为(1)则实际为(2)
C
显然,这题贪心
定义(f_{x,y,z}),等于(1)则可选,等于(0)则不可选
(f_{x,y,z})可通过((x',y,z),(x,y',z),(x,y,z'))转移,即若后继相邻节点全为(0),其为(1)
考虑其意义,将边按编号重定义方向,相当于博弈中,三张图,状态为三张图中所在点
那么(f_{x,y,z}=1)对应比输状态
对每个图的点搞出(sg)函数来,(ans=sumlimits_{sg_xoplus sg_yoplus sg_z=0}10^{18(x+y+z)})
由于在DAG中点sg函数的上界为(O(sqrt{m})),可以直接枚举两张图中点的sg值
(O(n+m))
D
令(a_{i,j})为第(i)个序列第(j)个数
我们发现若(a_{i,j}<a_{i,j-1}),其在序列中一定是连续的,进一步的,段可以分成前缀最大值
将其合并,例如({5,6,1})合并为({5,6})、({4,3,1})合并为({4})
那么若以其为序列进行操作,其得到的序列是有序的
若最后得到的序列长度为(m),其每个数有一个代表的长度(len_i)
考虑判断序列({len})合法的充要条件
- (len_iin[1,3])
- (len_i=2)的个数不超过(len_i=1)的个数
对于序列({len}),其能表示出来的原数组的个数为(dfrac{3n!}{prodlimits_{i=1}^m (sumlimits_{j=1}^i len_j)})
解释:
考虑从最后一段开始选其,该段选择靠后的(len_i-1)个数后,首数直接确定了
E
考虑一个点集,如何为合法
令点作直线垂直于(x)轴
构造字符串,从((0,0))出发,若从(i)点垂线上方经过,添加(u_i),若从下方经过,添加(d_i)
若该字符串能通过每次将相邻两个相同的字符删除,从而达到清空字符串的效果,则成功
找到极小的非法子集,令其大小为(n)
- (n=1):(s_1 = u_1d_1)
- (n>1):(s_n = u_n s_{n - 1} u_n d_n overline{s_{n-1}} d_n)。其中(overline{s_{n}})表示将(u_i,d_i)互换;进一步的,可以发现这其实就是翻转
证明:
显然该子集时,是非法的。考虑证明去掉任意点后合法
若存在(xin[1,n]),(s_x)可以清空即可
若去掉(n),显然可行。若去掉(xin[1,n)),考虑(s_x = u_x s_{x - 1} u_x d_x overline{s_{x-1}} d_x=u_xs_{x-1}overline{s_{x-1}}d_x=u_xd_x=emptyset)
L挺松的,可以把非法子集融到一起