[MtOI2019] 手牵手走向明天
题目背景
2019 年 5 月 17 日,Ynoi2018 Day 2 的题目上传至洛谷公共题库。
2019 年 5 月 19 日,mrsrz 想出了[[Ynoi2018]天降之物](https://www.luogu.com.cn/problem/P5397)的序列分块做法,并尝试 AC 该题。
2019 年 5 月 21 日,在 lxl 略微放宽时限,加上各种玄学优化下,mrsrz 通过了此题(现在时限改回来了所以没希望了)。
过了若干日,mrsrz 发现该序列分块做法可以支持区间查询,和 lxl 讨论后,发现也可以做到区间修改。
2019 年 10 月,mrsrz 找到 disangan233 并告诉了他这个题。disangan233 收下了这个题并打算作为 MtOI2019 Extra Round 的 F 题。
2019 年 11 月 1 日,mrsrz 发现某个地方的某个比赛的某个题和该题有类似的地方。观察题解后发现了几乎一样的做法。然后这个原来的 F 题没了。
2019 年 11 月 2 日,MtOI2019 Extra Round 顺利进行。
2019 年 11 月 30 日,mrsrz 想起了这道题,决定将这道饱经风霜的题贡献至公共题库中。希望这道题,能对大家有所帮助。
by mrsrz
2019 年 11 月 30 日
### Update:
2019 年 12 月 2 日,经 disangan233 同意,本题仍使用原来的题面。
2021 年 8 月 13 日,更新了 std,现在 std 的空间复杂度为 $O(n+m)$。
---
「俺、セツナは、お前を永遠に愛することちか!」
「我,Setsuna,发誓将会永远爱着你!」
「私の、あなたを永遠に愛することちかう!」
「我也是,发誓会永远爱着你!」
「歴史がかでもまた得た、ウェディングドレスてあみあをそ!」
「要是我们在其他的历史中再次相遇,那就披上婚纱再来一次吧!」
![rinne.png](https://i.loli.net/2019/10/03/oR4tNIQ6rBMe8GU.png)
题目描述
Rinne 给了你一个数列 $a_1,a_2,\dots,a_n$,你需要依次执行 $m$ 个操作。
操作共有两种:
1. 给定 $l,r,x,y$,将 $a_l,a_{l+1},a_{l+2},\dots,a_r$ 中等于 $x$ 的数全部改成 $y$。
2. 给定 $l,r,x,y$,找到 $i,j$ 满足 $i,j\in[l,r]$ 且 $a_i=x,a_j=y$,并要求 $|i-j|$ 最小。求这个最小值。无解输出 $-1$。
输入输出格式
输入格式
第一行两个正整数 $n,m$,表示序列长度和操作个数。
第二行 $n$ 个正整数 $a_1,a_2,\dots,a_n$。
接下来 $m$ 行,每行五个正整数 $op,l,r,x,y$。若 $op=1$,表示修改操作。若 $op=2$,表示询问操作。$l,r,x,y$ 对应的含义见题目描述。
输出格式
对每个 $op=2$ 的操作,输出一行一个整数表示答案。
输入输出样例
输入样例 #1
6 5
1 1 4 5 1 4
1 1 3 1 7
2 1 4 7 7
1 1 5 7 3
2 2 6 1 3
2 3 3 3 3
输出样例 #1
0
3
-1
说明
对于 $100\%$ 的数据,$1\leq n,m,a_i,x,y\leq 10^5$,$1\leq l\leq r\leq n$。
本题共有 $6$ 个子任务,每个子任务的限制如下:
子任务 $1$($1$ 分):保证对于任意操作,$l=1,r=n$。
子任务 $2$($5$ 分):$n,m\leq 50$。
子任务 $3$($18$ 分):$n,m\leq 2000$。
子任务 $4$($7$ 分):保证 $a_i,x,y\in\{1,2\}$。
子任务 $5$($29$ 分):保证当 $op=2$ 时,$x=y$。
子任务 $6$($40$ 分):没有特殊限制。
**时间限制**:$1.5\rm s$
**空间限制**:$512\rm MB$
Idea:nzhtl1477,mrsrz
Solution:mrsrz,nzhtl1477
Code:mrsrz
Data:mrsrz
Background:disangan233,mrsrz