AGC043(F未做)

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挺松的,可以把非法子集融到一起

原文地址:https://www.cnblogs.com/Grice/p/13236863.html