摘要: 传送门 这个题显然可以用树链剖分做。 然而线段树也能做。 每个点都对它的子树有贡献,所以先求一边 dfs序,然后直接在 dfs序 中搞 线段树 就行。 ——代码 1 #include <cstdio> 2 #include <cstring> 3 #define root 1, 1, n 4 #de 阅读全文
posted @ 2017-05-08 21:00 zht467 阅读(140) 评论(0) 推荐(1)
摘要: 传送门 用两个树状数组,cr 维护 1....x 中 r 的数量 cl 维护 1....x 中 l 的数量 求答案的时候只需要求 y 前面 被作为左端点 的个数 - x 前面 被作为右端点的个数 ——代码 1 #include <cstdio> 2 3 using namespace std; 4 阅读全文
posted @ 2017-05-08 19:21 zht467 阅读(123) 评论(0) 推荐(0)
摘要: luogu P3374 【模板】树状数组 1 在大牛分站交能过,主站卡常。 时间复杂度为 n√n ≈ 3.5 * 108,我都不知道怎么过的。。 ——代码 1 #include <cmath> 2 #include <cstdio> 3 #include <iostream> 4 5 using n 阅读全文
posted @ 2017-05-08 10:49 zht467 阅读(147) 评论(0) 推荐(1)
摘要: 传送门 以为对于这类问题线段树都能解决,分块比线段树菜,结果培训完才知道线段树是一种特殊的分块方法,有的分块的题线段树不能做,看来分块还是有必要学的。 对于这个题,先分块,然后另开一个数组对于每个块内排序。 区间加的话,加一个标记,每一个整块区间加,里面的数的相对大小不变,而左右两边零散的块直接暴力 阅读全文
posted @ 2017-05-08 09:50 zht467 阅读(132) 评论(0) 推荐(0)