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

posted @ 2020-07-05 23:11  Grice  阅读(172)  评论(0编辑  收藏  举报