树上主席树。 题意要求求u-v的路径上,前k小个数字是多少。转换一下,每次求1-k小的数字。故我们想到了树上主席树。 基于树上点前缀和的特点有:$sum[u]+sum[v]-sum[lca]-sum[fa[lca]]$是u-v路径的和。我们基于此,使用主席树,每个子树是权值线段树。就可以使用前缀和的 ...
分类:
其他好文 时间:
2020-07-07 17:35:54
阅读次数:
57
刚开始看到这道题的时候想的是线段树分治,毕竟这里的乘法和加法都是可以撤销的. 但是后来发现如果想要线段树分治的话就必须要满足交换律,但是标记 $(x,y)$ ( 乘 $x$ 后加 $y$)只满足结合律,不满足交换律. 那么就考虑 kdtree. kdtree 是维护平面上点的数据结构,然后我们可以把 ...
分类:
其他好文 时间:
2020-07-06 16:12:57
阅读次数:
46
传送门 一道板子题,思路和一基本没什么区别只是操作变了。话不多说上代码。 注意一下:这是大佬交给我们的指针写法,虽然不好理解但是比数组简洁方便容易错 声明:代码和HwH的线段树一样,因为是他帮我修改的。 #include<cstdio> const int maxn=100005; int p; t ...
分类:
其他好文 时间:
2020-07-06 11:19:13
阅读次数:
49
树状数组的一些基本操作。 树状数组支持单点修改和查询区间和的操作,但和线段树不同,它不支持区间修改操作(有些题目可以将区间修改转化为单点修改,有些则不可以)。下面介绍树状数组的预处理和基本操作。 1.求lowbit(n) 上一篇博客介绍了lowbit的定义和使用定义的基本求法。但是依据定义求lowb ...
分类:
编程语言 时间:
2020-07-06 11:14:58
阅读次数:
60
##动态开点-指针 #include<iostream> #include<cstdio> using namespace std; const long long k=5e5+5; long long a[k]; struct Segment{ long long l,r; long long s ...
分类:
其他好文 时间:
2020-07-06 11:11:21
阅读次数:
57
题目 P3372 【模板】线段树 1 提交 121.16k 通过 48.14k 时间限制 1.00s 内存限制 125.00MB 提交答案加入收藏 题目提供者 HansBug 难度 普及/提高- 历史分数 100 提交记录 查看题解 标签 高性能 进入讨论版 题目描述 如题,已知一个数列,你需要进行 ...
分类:
其他好文 时间:
2020-07-06 11:11:03
阅读次数:
64
求——逆 序 对 Part 0:作者前言(废话) 以前其实早就学过用二路归并排序的方法求序列的逆序对,因为一直没有学会二路归并,所以逆序对一直不会做 前几天学了线段树,然后无意间在书上看到了“线段树求逆序对”这样的问题…… 于是果断魔改一发线段树求一手逆序对。。。然后就有了这个博客 另外,祝贺我考试 ...
分类:
其他好文 时间:
2020-07-05 17:33:56
阅读次数:
68
不多bb 直接代码 #include<iostream> #include<cstdio> using namespace std; const long long k=5e5+5; long long a[k]; struct Segment{ long long l,r; long long s ...
分类:
其他好文 时间:
2020-07-05 17:00:43
阅读次数:
58
雨天的尾巴 这道题应该算是很板子了,不过需要稍微思考一下,对于每次发放,如果模拟发放过程,那么每次发放的时间复杂度是$O(n)$的,这样显然会T,考虑如果每次只发放一种,用树上差分解决就可以,但是这个有很多种,所以给每个结点开一棵权值线段树就行,每个节点记录每种救济粮的数量,然后同样是利用差分的思想 ...
分类:
其他好文 时间:
2020-07-05 15:42:13
阅读次数:
51
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4719 题目大意:有n个人,第$i$个人的身高为$h_i$,现在要把这些人按照原来的顺序分为连续的若干段,要求每组的人数不超过$l$,同时,我们这每组的最后一个人身高为$b_i$,则有$b_i>b_{i- ...
分类:
其他好文 时间:
2020-07-05 13:24:34
阅读次数:
52