首页 > 其他分享 >CF1948

CF1948

时间:2024-03-17 20:22:53浏览次数:15  
标签:拆成 字符 题意 CF1948 不能到达 walk slide

A

题意:定义一个字符是特殊的,当且仅当它左右两边恰有一个字符与之相同。要求构造一个字符串,使得恰好有 \(n\) 个特殊字符,或判断无解。

考虑一个连续的字符段,如果长度 \(1\),不贡献特殊字符;否则必然贡献 \(2\) 个。所以无解条件就是 \(2\not\mid n\)。

否则可以用 AABAABAABAAB... 构造。

B

题意:给定一个序列。可以选择其中若干个数,将它们拆成它们的数位,例如把 123 拆成 1 和 2 和 3,然后放到它们原来的位置。问能否用这种方法使数组单调上升排序。

发现肯定只会把一个前缀拆成数位。

C

题意:给定一个 \(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 转移。

D

题意:称一个字符串是好的,当且仅当它的长度是偶数且它的前一半等于后一半(不是回文!)。
给定字符串,其中有一些 ? 表示可以任意决定这个位置的字符。求最大的好的子串能有多长。\(n\le 3000\)。

标签:拆成,字符,题意,CF1948,不能到达,walk,slide
From: https://www.cnblogs.com/FLY-lai/p/18079081

相关文章

  • CF1948F 题解
    对于每个询问,可以把这\(r-l+1\)个袋子包合并成一个有\(\sum\limits_{i=l}^ra_i\)个金币和\(\sum\limits_{i=l}^rb_i\)个银币的袋子。\([l,r]\)外的袋子同理也可以这样合并。假设\(sum_a=\sum\limits_{i=1}^na_i,sum_b=\sum\limits_{i=1}^nb_i\),\(......