题意:定义一个字符是特殊的,当且仅当它左右两边恰有一个字符与之相同。要求构造一个字符串,使得恰好有 \(n\) 个特殊字符,或判断无解。
考虑一个连续的字符段,如果长度 \(1\),不贡献特殊字符;否则必然贡献 \(2\) 个。所以无解条件就是 \(2\not\mid n\)。
否则可以用 AABAABAABAAB...
构造。
题意:给定一个序列。可以选择其中若干个数,将它们拆成它们的数位,例如把 123 拆成 1 和 2 和 3,然后放到它们原来的位置。问能否用这种方法使数组单调上升排序。
发现肯定只会把一个前缀拆成数位。
题意:给定一个 \(2\times n\) 的字符图,每个字符为
>
或<
。初始在 \((1,1)\),每次可以向任意方向走一步,然后移到那个格子内字符指向的格子。问能不能到达 \((2,n)\)。\(n\le 2e5\)。(就算走到了 \((2,n)\) 也会滑走,必须是滑到 \((2,n)\))
\(slide[i][j]\) 表示如果滑到 \((i,j)\) 能不能到达 \((2,n)\),\(walk[i][j]\) 表示如果走到 \((i,j)\) 能不能到达 \((2,n)\)。
初始 \(slide[2][n]=true\)。
转移方程:$$slide[i][j]=walk[i-1][j]||walk[i+1][j]||walk[i][j-1]||walk[i][j+1]$$
\[walk[i][j]=slide[to(i)][to(j)] \]这里 \(to(i),to(j)\) 表示 \((i,j)\) 指向的格子的坐标。
用 BFS 转移。
标签:拆成,字符,题意,CF1948,不能到达,walk,slide From: https://www.cnblogs.com/FLY-lai/p/18079081题意:称一个字符串是好的,当且仅当它的长度是偶数且它的前一半等于后一半(不是回文!)。
给定字符串,其中有一些?
表示可以任意决定这个位置的字符。求最大的好的子串能有多长。\(n\le 3000\)。