数据结构
丽尔巴茨
这个作者很懒,什么都没留下…
展开
-
单调栈的运用
单调栈可以用来是实现在 离线的情况下,O(n)的处理出数组中所有点比某个点小或大最近的距离是多少;具体做法是用栈来维护一边的点的下表,由于假如i<j hi>hj 那么h【i】便永无出头之日;可以把他删了,而在栈里能找到的直到第一次出现的小与hi的h【j】就一定是最近的,每个点出栈一次,进栈一次,所以时间复杂度是on的;例题是acwing 131和152以下给出ac代码...原创 2019-07-02 01:10:54 · 85 阅读 · 0 评论 -
p3572 单调队列优化dp模板题
以下给出ac代码:#include <stdio.h>#include <algorithm>#include <string.h>#include <queue>using namespace std;const int maxn=1e6+7;int h[maxn],q[maxn],head,tail,dp[maxn];int n...原创 2019-09-09 18:54:05 · 120 阅读 · 0 评论 -
p1607 庙会班车 区间贪心加线段树
假如只有一辆班车,就是典型的普通区间贪心,贪心的维护终点从小到大选即可但是有多辆班车,其实也是一样的可以按终点贪心,然后线段树维护某段区间的班车用了多少就可以了,然后还有就是他这区间是左闭右开的,所以需要添加牛时,右端点-1;以下给出线段树版ac代码,据说数据水,貌似暴力不用线段树也能过;#include <stdio.h>#include <string.h>#...原创 2019-09-09 15:32:24 · 131 阅读 · 0 评论 -
主席树模板 p3834
应该是主席树的最普通最简单的应用,没有修改操作,查询静态区间第k小;#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;const int maxn=2e5+7;int root[maxn],idx,cnt=1,g[maxn],li[maxn];...原创 2019-08-12 06:22:28 · 134 阅读 · 0 评论 -
p3372线段树模板
线段树,求和版模板#include <stdio.h>#include <string.h>#include using namespace std;typedef long long ll;const int maxn=1e5+7;ll seg[maxn<<2],lazy[maxn<<2],g[maxn];int n,m;inli...原创 2019-08-08 23:49:43 · 93 阅读 · 0 评论 -
p3368树状数组的拓展运用
一般的树状数组是单点修改,可以查询前缀和,从而做到查询区间和,两者的时间复杂度都是o(logn)不过树状数组存储的是原数组的差分数组的话,就可以做到区间修改和查询单点的值用两个树状数组就可以起到线段树的作用,不过常数可能大点,而且貌似只能做到加的操作,不过代码少啊,不过真正要学习和常用的还是线段树吧,功能更强大,树状数组还是搞一下逆序对就完了#include <stdio.h>...原创 2019-08-08 23:03:19 · 109 阅读 · 0 评论 -
p1774 逆序对的理解
#include <stdio.h>#include <string.h>#include using namespace std;typedef long long ll;const int maxn=5e5+7;ll g[maxn],c[maxn],li[maxn],cnt;int n;inline int lowbit(int x){return x&...原创 2019-08-08 21:30:55 · 180 阅读 · 0 评论 -
p1908逆序对 数状数组的运用
数状数组的运用+哈希的思想 可以统计数组的逆序对p1908 逆序对模板题#include <stdio.h>#include <string.h>#include using namespace std;typedef long long ll;const int maxn=5e5+7;int h[maxn],li[maxn],cnt,c[maxn];in...原创 2019-08-08 21:29:36 · 140 阅读 · 0 评论 -
树状数组 模板
```#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;const int maxn=5e5+7;int c[maxn];int n,m;inline int lowbit(int x){return x&(-x);}void...原创 2019-08-04 17:58:19 · 80 阅读 · 0 评论 -
p3384 树链剖分模板题
线段树 在图论里面的应用线段树是处理区间问题的在图论的树里面的应用就是通过重链的方式dfs编号,形成一段连续的区间,就可以用线段树来处理了;能做到的事情为如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作:操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z操作2: 格式: 2 x y 表示求树从x到y结点最短路径...原创 2019-09-10 14:27:06 · 96 阅读 · 0 评论