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

题目描述

在异形工厂里,有一种叫“轮换器”的工具。使用一次轮换器可以将一个 01 串中长度**恰好为 $3$** 的子串循环移位,即将 $xyz$ 替换为 $yzx$ 或 $zxy$。 给定长度为 $n$ 的 01 串 $s, t$。有 $q$ 次询问,每次询问会给定 $l, r$,求最少需要使用多少次轮换器才能将 $s[l,r]$ 变为 $t[l,r]$。

输入格式

从标准输入读入数据。 输入的第一行包含两个正整数 $n, q$,分别表示字符串 $s, t$ 的长度和询问次数。 输入的第二行包含一个长度为 $n$ 的 01 字符串 $s$。 输入的第三行包含一个长度为 $n$ 的 01 字符串 $t$。 输入的第 $i+3$ ($1 \le i \le q$) 行包括两个正整数 $l, r$,表示第 $i$ 次询问。

输出格式

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

说明/提示

### 【样例 1 解释】 对于第一次询问,一种可能的操作方式为: 1. 选择子串 $[4,6]$,将 $011$ 替换为 $110$,得到 $101110$; 2. 选择子串 $[2,4]$,将 $011$ 替换为 $110$,得到 $111010$; 3. 选择子串 $[4,6]$,将 $010$ 替换为 $100$,得到 $111100$。 ### 【子任务】 对于所有测试数据,均有: - $1 \le n, q \le 5 \times 10^5$; - 对于所有 $1 \le i \le n$,均有 $s_i, t_i \in \{0,1\}$; - $1 \le l \le r \le n$。 | 子任务编号 | 分值 | $n, q \le$ | 特殊性质 | |:-:|:-:|:-:|:-:| | 1 | 10 | $10$ | 无 | | 2 | 10 | $2 \times 10^3$ | A | | 3 | 25 | $2 \times 10^3$ | 无 | | 4 | 20 | $2 \times 10^5$ | 无 | | 5 | 10 | $5 \times 10^5$ | A | | 6 | 25 | $5 \times 10^5$ | 无 | 特殊性质 A:对于所有 $1 \le i \le \lfloor \frac{n+1}{2} \rfloor$,均有 $s_{2i-1} = t_{2i-1} = 0$。