Training for 分块&莫队
分块 Study data Link:http://hzwer.com/8053.html // hzwer讲的很好很全 树上莫队Study Link:http://codeforces.com/blog/entry/43230 ( ery nice 并且有题目推荐 莫队算法时间复杂度O( n * sqrt(n) )证明: 由于每一块的大小为sqrt(n),故有sqrt(n)块,按照所属块为first key ,右端点为second key,考虑每一块,因为每块的右端点是Increase,故右端点最大的移动为N ,左端点的最大移动为 k × sqrt(n),故总复杂度为O(n×sqrt(n) + m×sqrt(n)) ≈ O( n * sqrt(n) ) 一道很牛逼的题 题意 给一个n的数的序列,现有q次询问, 1代表是修改操作,2代表是查询操作,对于每次查询输出[1,1e6]以内出现偶数次最小的树(没有出现也算是偶数次) (a[i],n,q<=1e6) 分析 对[1,1e6]分块,每次修改之前的数所在的块和修改后所在的块即可 代码:待补 CDOJ 1324 分析 简单的单点更新,区间最大值 时间复杂度( n×sqrt(n) ) #include<iostream> #include<cstdio> #include<cstring> #include<cmath>