Problem 1
1.带修改的主席树+平衡树,维护前驱:每修改一个数会导致三个数的前驱改变,对每个值开平衡树,存放每个值的位置在哪
2.分块,维护前驱,开一个数组表示每个块内排序后的结果,两边暴力,中间二分
O(2s+(N/s)*logs) s=sqrt(N*logN)
法二:f[i][j]为从i到j的块的set,把set换成可持久化线段树或可持久化平衡树
或f[i][j]存i块到j块颜色个数
g[i][c] 前面i个块c颜色出现的次数,前缀和维护??
3.莫队
f[i][j]
Problem 11
离线:莫队+可持久化并查集
Problem 16
分块
二分
Problem 11
记录使得i可以作为生成森林的边需要把谁干掉
LCT(删边加边)+主席树(维护比k小的数)
Problem 14
f[k]长度为k的路径最小的权值
f[k]权值为k是路径最长多少
=(l+f[v1])*min(v,v1)
1.v1>=v maxf[v1]
2.v1<v (l+f[v1])*v1=l*v1+f[v1]*v1
y1=l+f[1]
y2=l*2+f[2]*2
上/下? 凸鞘
太麻烦了,只处理第一种情况:正着扫一遍+倒着扫一遍
出现偶数次,bzoj2821