专栏文章

1111

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mina367p
此快照首次捕获于
2025/12/01 23:02
3 个月前
此快照最后确认于
2025/12/01 23:02
3 个月前
查看原文

t1

二分答案,贪心匹配(当前如果匹配,一定是上一个匹配的组+1)

t2

考虑预处理,将奇数位反转。 这样限制变成了ab->bb , ba -> aa
考虑相邻字符不同的位置:
  • 用差分数组 aabb 表示 XXYY 的边界:
    • a[i]=1a[i] = 1 表示 XiXi1X_i \neq X_{i-1}
    • b[i]=1b[i] = 1 表示 YiYi1Y_i \neq Y_{i-1}

XX 能转换为 YY 当:

  • 对于任意前缀 [1,k][1, k]XX 的边界数 \geq YY 的边界数。
    即:k[1,n],a[i]b[i]\forall k \in [1, n], \sum a[i] \geq \sum b[i]
  • XXYY 的最后一个字符在变换后相同
    等价于:1nai=1nbi\bigoplus_1^n a_i = \bigoplus_1^n b_i
使用线段树维护数组: d[k]=i=1ka[i]i=1kb[i]d[k] = \sum_{i=1}^k a[i] - \sum_{i=1}^k b[i] 题目条件等价于:
  • 前缀: mink=1nd[k]0\min_{k=1}^n d[k] \geq 0
  • 整体: 维护 1nai\bigoplus_1^n a_i1nbi \bigoplus_1^n b_i

当翻转原始字符串的第 pp 个字符时:

更新XX
  1. 翻转 a[p]a[p]
  2. 更新线段树:
    • 翻转 a[p]a[p]:对区间 [1,p][1, p]Δ\DeltaΔ=1\Delta = 1 如果 a[p]1a[p] \to 1 ,否则为1-1
    • 翻转 a[p+1]a[p+1]
  3. 更新 cacacaca1ca \leftarrow ca \oplus 1(如果 p=np=n
更新YY: 同理,翻转同时维护 b[p]b[p]b[p+1]b[p+1]
每次更新后,检查:
  • 最小值 0\geq 0
  • ca=cbca = cb
    即可。

cf1763c

分类讨论。
  • n>4n>4时,ans=maxaians=\max a_i
    考虑1 1 4 5 1 4 -> 1 1 4 5 3 3 -> 1 1 4 5 0 0(造0)
    ->1 1 4 5 5 5-> 0 0 4 5 5 5 -> 5 5 5 5 5 5
    在右断点造0,把max传播到右端点,在对左端点做一遍即可。
  • n=2n=2 , ans=max(a1+a2,2a1a2)ans=\max(a_1+a_2,2*|a_1-a_2|)
    显然只有两种情况。
  • n=3,max{a1,a3} n=3,\max \in \{a_1,a_3\} : 同n>3n>3
  • n=3,max=a2 n=3,\max = a_2:
    • (1,3)(1,3) : 3a3a1ans3|a_3-a_1| \to ans
    • (1,2)(1,2) : 3max(a2a1,a3)ans3\cdot\max(|a_2-a_1|,a_3) \to ans
      做完后有a2a1,a3|a_2-a_1|,a_3两个值,可以取最大的。
    • (2,3)(2,3) : 3max(a3a2,a1)ans3\cdot\max(|a_3-a_2|,a_1) \to ans

cf2124e

先考虑什么情况无解:
  • ai=1(mod2)\sum a_i = 1(\bmod 2)

评论

0 条评论,欢迎与作者交流。

正在加载评论...