摘要: bzoj 4765 -- 分块+dfs序+树状数组: 考虑分块。将1~n分成sqrt(n)块,对每个点记录它在每个块中的祖先个数,修改一个点时枚举每一块修改。 查询[l,r]时如果一个块在[l,r]中,直接将其加入答案。显然只剩下O(sqrt(n))个点。求出树的dfs序,用树状数组维护就可以O(l 阅读全文
posted @ 2017-03-07 20:42 gjghfd 阅读(202) 评论(0) 推荐(1)
摘要: 考虑建一棵树,对于一个点i,如果i+ki<=n,将i+ki作为它的父亲。那么答案就是这个点的深度。 由于有修改操作,用LCT维护这棵树,每个修改操作改变父节点就可以了。 代码: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 阅读全文
posted @ 2017-03-07 16:18 gjghfd 阅读(169) 评论(0) 推荐(1)