首页 > 其他分享 >test1211

test1211

时间:2023-12-13 19:34:16浏览次数:31  
标签:... le 暴力 复杂度 test1211 合并 操作

别急。先更一波T2,T3。

img

七管荧光灯

可以状压打表可以发现:一种局面为必败状态当且仅当满足 \(a_{1}=x,a_{2}=x,a_{3}=x,a_{4}=y,a_{5}={z},a_{6}=z,a_{7}=z\) 且 \(x \oplus y \oplus z=0\)。

然后就可以数位 dp 了,记个 \(f_{i,0/1,0/1,0/1,0/1,0/1,0/1}\)。随便跑跑就行。

字符串

题意:

有一个字符串 \(S\),需要支持 \(Q\) 个操作。

  • 操作 1:给出条件 \(l,r\) 表示 \(S[l...r]\) 为一个回文串。
  • 操作 2:如果 \(s[a...b]\) 和 \(s[x...y]\) 一定相等就输出 Equal,一定不相等则输出 Not equal,无法判断则输出 Unknown。

\(n \le 10^5, Q \le 2 \times 10^5\)。

分析:

显然,Not equal 的充要条件为 \(a-b\ne x-y\)。

不难得到一个暴力做法:

  • 操作 1:把 \([l...mid]\) 到 \([mid+1,r]\) 暴力连边。
  • 操作 2:判断 \(s[a]\) 与 \(s[x]\),\(s[a+1]\) 与 \(s[x+1]\) ... \(s[b]\) 与 \(s[y]\) 是否均在同一个联通块类。

利用并查集时间复杂度可以做到 \(O(nQ \log n)\)。

考虑操作 2,如果我们知道能动态维护每个点的 fa,那么就能利用哈希快速判断是否合法。

可以发现,一个 \(n\) 个点的并查集的有效合并次数为 \(n-1\)。

只需要保证在操作 1 时都是进行的有效的合并操作,那么时间复杂度就能降下来。

具体地,开两棵线段树分别维护每个区间正着和反着的哈希值。

在操作 1 时,可以利用二分查找第一个有效的合并操作,使用启发式暴力合并即可。

时间复杂度 \(O(n \log ^2 n)\)。

标签:...,le,暴力,复杂度,test1211,合并,操作
From: https://www.cnblogs.com/xcs123/p/17899758.html

相关文章