
数据结构
ShɑΙteж
think twice,code once
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线段树杂题
http://acm.hdu.edu.cn/showproblem.php?pid=1542#include<bits/stdc++.h>#define rep(i,a,b) for(int i=(a);i<=(b);i++)using namespace std;const int N=1e5;struct node{double l,r,h;int tag;};...原创 2018-11-05 17:48:24 · 172 阅读 · 0 评论 -
[SHOI2016]随机序列 线段树
[SHOI2016]写几组例子可以发现对答案产生贡献的只有一段前缀的连乘,因为只要从这个地方断开就会有+,-两种符号相互抵消,对答案的贡献就是0,然后问题就变成了区间修改,线段树即可#include<bits/stdc++.h>#define rep(i,a,b) for(int i=(a);i<=(b);i++)#define per(i,a,b) for(int ...原创 2019-03-25 10:19:40 · 280 阅读 · 0 评论 -
[CF343D]Water Tree 树链剖分
[CF343D]模板题,没啥好说的 注意线段树空间#include<bits/stdc++.h>#define rep(i,a,b) for(int i=(a);i<=(b);i++)using namespace std;const int N=2<<19;struct node{int y,n;}e[N<<1];int lin[N&...原创 2019-03-12 21:04:21 · 225 阅读 · 0 评论 -
[SP3267]DQUERY - D-query 主席树
[SP3267]就是区间内本质不同数的计数的在线做法 每个颜色x记录一个last[x]表示改颜色上一次出现的位置,每次把last[x]的位置-1,x现在的位置+1,保证本质不同的数贡献为1 每次修改两条链,需要建一个辅助根节点#include<bits/stdc++.h>#define rep(i,a,b) for(int i=(a);i<=(b);i++)#de...原创 2019-03-12 07:43:03 · 250 阅读 · 0 评论 -
[BZOJ5319]军训列队 主席树+二分
[BZOJ5319]显然对于一个询问,我们应该将被询问的人以及询问的位置排序后一一匹配 也就是排序后求 \sum=|Ai−Bi| 由于人的位置互不相同,所以A数组是递增的,而B数组是连续的一段整数,因此Ai与Bi的大小关系只有可能由小于到大于变化一次 对原序列建立主席树,询问时在对应区间上二分出大小关系变化的位置,前后用区间和计算答案即可 时间复杂度O((n+m)logk)Cod...原创 2019-03-11 19:45:11 · 192 阅读 · 0 评论 -
动态逆序对 BIT套线段树
动态逆序对Code#include<bits/stdc++.h>#define rep(i,a,b) for(int i=(a);i<=(b);i++)#define ll long longusing namespace std;const int N=4e5;const int M=3e7+100;int root[M],sum[M],pos[N],lc...原创 2019-02-22 14:08:13 · 237 阅读 · 0 评论 -
高级数据结构模板
可持久化并查集[BZOJ3673]#include<bits/stdc++.h>#define rep(i,a,b) for(int i=(a);i<=(b);i++)#define per(i,a,b) for(int i=(a);i>=(b);i--)using namespace std;const int N=2e4*20;int lc[N],rc[...原创 2019-02-10 17:11:56 · 376 阅读 · 0 评论 -
[BZOJ3165]线段树标记永久化
[BZOJ3165]Code#include<bits/stdc++.h>#define rep(i,a,b) for(int i=(a);i<=(b);i++)#define pdd pair<double,double>#define se second#define fi firstusing namespace std;const int...原创 2019-02-10 15:06:30 · 367 阅读 · 0 评论 -
堆的原理及实现
插入void put(int d){ int now,next; heap[++heap_size]=d; now=heap_size; while(now>1) { next=now/2; if(heap[now]>heap[next]) break;//小根堆 swap(heap[now],heap[next]); now=next; }}删...原创 2018-03-12 10:00:08 · 384 阅读 · 0 评论 -
线段树暴力
#include<bits/stdc++.h>#define rep(i,a,b) for(int i=(a);i<=(b);i++)#define per(i,a,b) for(int i=(a);i>=(b);i--)#define ll long longusing namespace std;const ll inf=1e8;const int N=2...原创 2019-04-03 19:03:48 · 302 阅读 · 0 评论