题目 有n个数编号从0→n-1,两种操作: Q L R:询问编号为L→R-1的数中共有多少种不同的数 M X Y:将编号为X的数改为Y 共有m个操作 分析 既然是单点修改,查询,我们考虑一下分块. 首先,定义\(next_{i}\)表示,在\(i\)之后的第一个与编号为\(i\)的数相同的数的位置. 接着,我们把\(i\)向\(next_{i}\)连一条边. 那么就会发现,当把边处理好后,查询操作就迎刃而解了: 查询操作 假设现在要查询\([x,y]\), 其中next,以及它们的连边的情况是:…