#P14925. [北大集训 2025] 异形工厂

    ID: 16877 远端评测题 2000ms 1024MiB 尝试: 0 已通过: 0 显示难度NOI/NOI+/CTS 上传者: 标签>2025CTT(清华集训/北大集训)

[北大集训 2025] 异形工厂

题目描述

在异形工厂里,有一种叫“轮换器”的工具。使用一次轮换器可以将一个 01 串中长度恰好为 33 的子串循环移位,即将 xyzxyz 替换为 yzxyzx 或 zxyzxy。

给定长度为 nn 的 01 串 s,ts, t。有 qq 次询问,每次询问会给定 l,rl, r,求最少需要使用多少次轮换器才能将 s[l,r]s[l,r] 变为 t[l,r]t[l,r]。

输入格式

从标准输入读入数据。

输入的第一行包含两个正整数 n,qn, q,分别表示字符串 s,ts, t 的长度和询问次数。

输入的第二行包含一个长度为 nn 的 01 字符串 ss。

输入的第三行包含一个长度为 nn 的 01 字符串 tt。

输入的第 i+3i+3 (1≤i≤q1 \le i \le q) 行包括两个正整数 l,rl, r,表示第 ii 次询问。

输出格式

输出到标准输出。

对于每次询问,输出一行一个整数表示使用轮换器的最少次数。特别地,若无论如何都无法将 s[l,r]s[l,r] 变为 t[l,r]t[l,r],则输出 −1-1。

10 5
1010111000
1111000001
1 6
3 5
4 5
1 10
8 9
3
1
-1
5
0

提示

【样例 1 解释】

对于第一次询问,一种可能的操作方式为:

  1. 选择子串 [4,6][4,6],将 011011 替换为 110110,得到 101110101110;
  2. 选择子串 [2,4][2,4],将 011011 替换为 110110,得到 111010111010;
  3. 选择子串 [4,6][4,6],将 010010 替换为 100100,得到 111100111100。

【子任务】

对于所有测试数据,均有:

  • 1≤n,q≤5×1051 \le n, q \le 5 \times 10^5;
  • 对于所有 1≤i≤n1 \le i \le n,均有 si,ti∈{0,1}s_i, t_i \in \{0,1\};
  • 1≤l≤r≤n1 \le l \le r \le n。
子任务编号 分值 n,q≤n, q \le 特殊性质
1 10 1010 无
2 2×1032 \times 10^3 A
3 25 无
4 20 2×1052 \times 10^5
5 10 5×1055 \times 10^5 A
6 25 无

特殊性质 A:对于所有 1≤i≤⌊n+12⌋1 \le i \le \lfloor \frac{n+1}{2} \rfloor,均有 s2i−1=t2i−1=0s_{2i-1} = t_{2i-1} = 0。