- 博客(19)
- 收藏
- 关注
原创 [算法]双向循环链表的析构函数 all_delete
起因是斐波那契堆的析构函数问题,于是有了这个双向循环链表的析构函数。由于此时我们不要维护链表结构所以只需要全部删除即可,实际时间复杂度 O(n), 均摊复杂度 O(1) //EFFECT: delete Node recursively, //Time ComplexityO: (n) since we visit each node only once template<typena...
2019-11-06 17:40:34 874
原创 【模板】可持久化线段树
大神讲解下终于理解了可持久化和区间第 K大数的关系。。。 终于理解了权值线段树是什么。。。 权值线段树: 例: 1 1 2 7 9 11 一串数列,权值线段树里的 线段 指 有序数列 里的 一段区间 。。。 一般统计的是 一个数 (一个区间里的数)
2016-07-13 20:18:01 514
原创 【模板】LCT+理解
原来一直不知道LCT是干什么的。。。只知道是动态树剖。。。(现在看好像也不是那么像了。。。) 核心:用一丛平衡树维护一棵无根树。。。 因为SPLAY与LCT相性最好。。。(个人感觉。。。毕竟还没看到拿TREAP写的。。。(PS:我孤陋寡闻。。。)); 所以用SPLAY维护!!! 核心++:把一棵树剖成许多链。。。一条长度为log(n)的链是一棵SPLAY(关键字:dep) 所以SPLAY
2016-07-06 09:27:04 626
原创 二分图相关性质
最大匹配数: 1:最小点覆盖数=最大匹配数; 2:最大独立集=点数-最大匹配数; 3:对于有回路的点集:所有点做S,复制所有点做T; 边连两条:use[u][v]=use[v][u]=1; 最大匹配数=ans/2;
2016-06-13 20:41:26 285
原创 【模板】后缀数组
虽然基本是照着打的。。。感觉还是很好。。。 #include #include #include #define MAXN 300000 using namespace std; int n,m,sa[MAXN],rank[MAXN],h[MAXN]; int _x[MAXN],_y[MAXN],tx[MAXN],bit[MAXN]; long long ans=0; ///*
2016-04-30 10:10:05 330
原创 【模板】splay
2019.1.22注释: DEl操作中,虽然实现了删除节点的操作,但是删除节点后的splay树十分难看 所以正常操作是先splay前驱到根,然后splay后继到根的左(右)子, 然后删除根的左(右)子的要删除的叶节点。 如要搞清楚为什么这么做能减少时间,需要清楚splay期望的计算方法 #include<iostream> #include<cstdio> #d...
2016-03-19 22:23:18 331
原创 【模板】treap(数组)
#include #define MAXN 100000 using namespace std; int n; int ch[MAXN][2],use[MAXN],rnd[MAXN]; int size=0,root=0; inline int cmp(int x,int num) { if(num==use[x])return -1; return num<use[x] ? 0:1
2016-03-18 18:45:27 589
原创 【模板】dinic(网络流)
#include #include #include #define MAXN 1000 #define INF 0x7fffffff using namespace std; int n,m; int next[MAXN*2],fst[MAXN*2],to[MAXN*2]; int tail=1; int q[MAXN],h[MAXN],c[MAXN*2]; int ans=0; inli
2016-03-13 15:11:16 300
原创 【模板】Treap
#include #include using namespace std; struct Treap { int num,size,fix; Treap *ch[2]; Treap(int x)
2016-03-05 21:02:47 427
原创 【模板】(未完成)AVL
#include #include using namespace std; struct AVL { int num,size,h; AVL *ch[2]; AVL(int x) { num=x,size=1,h=1; ch[0]=ch[1]=NULL;
2016-03-05 19:36:28 266
原创 【codevs】4633 树链剖分入门
之前的模板错了一个地方。。。调的时候怎么也不行。。。 更新&&求解都需要在树链上爬一边。。。 #include #include #define MAXN 249999 #define LL long long using namespace std; //use of main LL n,m; //use of pre_star struct edge { LL nex
2016-02-28 15:13:42 360
原创 【理解】线段树中树链存储方式
线段树中树链存储方式 回想建树方式:(从dfs_2开始) void dfs_2(int x,int tt) { top[x]=tt; po[x]=++cnt; id[po[x]]=x; if(son[x]!=0)dfs_2(son[x],pre); //这一步使重链成为连续区间; for(int i=fst[x];i;i=use[x].
2016-02-19 18:04:13 406
转载 [理解]树链剖分
转载请注明:http://blog.csdn.net/jiangshibiao/article/details/24669751 【原题】 1036: [ZJOI2008]树的统计Count Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4465 Solved: 1858 [Submit][Status] Descripti
2016-02-19 17:33:19 1566
原创 【1056】图形面积
#include #include #define LL long long #define MAXN 150 using namespace std; //use of main int n; struct line { LL lx,rx,y; int flag; line(){}; line(LL _lx,LL _rx,LL _y,int _flag) { lx
2016-02-19 10:45:01 495
转载 【理解】线段树——扫描线
原文:http://www.cnblogs.com/kane0526/archive/2013/02/26/2934214.html 题目大意: 给你n个矩形,求他们的总面积之和。 解题思路: 这是我写的线段树扫描线第一题,搜狗了一下,说实话网上的解释都很抽象,昨晚用手机百度一下看到了一张让人一看就有灵感的扫描线图,今天找了很久都没找到那张图了,本来还想copy一下给大家分享
2016-02-19 07:56:46 4354
原创 【模板】树状数组
//ATTANTION: // 可引入二维!!!! //use of main int n; //use of arr int tree[MAXN]; [ lowbit(x); ] inline int lowbit(int x) {return x&(-x);} [ add(x,val); ] int add(int a,int v) { for(int i
2016-02-18 21:57:28 269
原创 【模板】线段树
//use of main int val[MAXN]; //use of tree struct tree { int maxx,sum; int add; tree() {maxx=sum=add=0;} }use[MAXN*4]; [ lc(x); rc(x); ] inline int lc(int x){ return x << 1;} inline int rc(i
2016-02-18 21:37:55 286
原创 【模板】前向星+树链剖分+线段树
//use of pre_star int tail=0; int fst[maxn]; struct edge { int to,next; edge(){to=next=0'} }use[maxn]; //use of partition int fa[maxn],son[maxn]; int size[maxn],top[maxn],dep[maxn]; int po
2016-02-18 20:47:05 386
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人