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=\sum\limits_{sg_x\oplus sg_y\oplus 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_i\in[1,3]\)
- \(len_i=2\)的个数不超过\(len_i=1\)的个数
对于序列\(\{len\}\),其能表示出来的原数组的个数为\(\dfrac{3n!}{\prod\limits_{i=1}^m (\sum\limits_{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\)互换;进一步的,可以发现这其实就是翻转
证明:
显然该子集时,是非法的。考虑证明去掉任意点后合法
若存在\(x\in[1,n]\),\(s_x\)可以清空即可
若去掉\(n\),显然可行。若去掉\(x\in[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挺松的,可以把非法子集融到一起