- 博客(19)
- 收藏
- 关注
原创 [算法]双向循环链表的析构函数 all_delete
起因是斐波那契堆的析构函数问题,于是有了这个双向循环链表的析构函数。由于此时我们不要维护链表结构所以只需要全部删除即可,实际时间复杂度 O(n), 均摊复杂度 O(1)//EFFECT: delete Node recursively,//Time ComplexityO: (n) since we visit each node only oncetemplate<typena...
2019-11-06 17:40:34
915
原创 【模板】可持久化线段树
大神讲解下终于理解了可持久化和区间第 K大数的关系。。。终于理解了权值线段树是什么。。。权值线段树: 例: 1 1 2 7 9 11 一串数列,权值线段树里的 线段 指 有序数列 里的 一段区间 。。。 一般统计的是 一个数 (一个区间里的数)
2016-07-13 20:18:01
536
原创 【模板】LCT+理解
原来一直不知道LCT是干什么的。。。只知道是动态树剖。。。(现在看好像也不是那么像了。。。)核心:用一丛平衡树维护一棵无根树。。。因为SPLAY与LCT相性最好。。。(个人感觉。。。毕竟还没看到拿TREAP写的。。。(PS:我孤陋寡闻。。。));所以用SPLAY维护!!!核心++:把一棵树剖成许多链。。。一条长度为log(n)的链是一棵SPLAY(关键字:dep)所以SPLAY
2016-07-06 09:27:04
666
原创 二分图相关性质
最大匹配数:1:最小点覆盖数=最大匹配数;2:最大独立集=点数-最大匹配数;3:对于有回路的点集:所有点做S,复制所有点做T; 边连两条:use[u][v]=use[v][u]=1; 最大匹配数=ans/2;
2016-06-13 20:41:26
310
原创 【模板】后缀数组
虽然基本是照着打的。。。感觉还是很好。。。#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
347
原创 【模板】splay
2019.1.22注释:DEl操作中,虽然实现了删除节点的操作,但是删除节点后的splay树十分难看所以正常操作是先splay前驱到根,然后splay后继到根的左(右)子,然后删除根的左(右)子的要删除的叶节点。如要搞清楚为什么这么做能减少时间,需要清楚splay期望的计算方法 #include<iostream>#include<cstdio>#d...
2016-03-19 22:23:18
354
原创 【模板】treap(数组)
#include#define MAXN 100000using 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
622
原创 【模板】dinic(网络流)
#include#include#include#define MAXN 1000#define INF 0x7fffffffusing 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
320
原创 【模板】Treap
#include #include using namespace std; struct Treap { int num,size,fix; Treap *ch[2]; Treap(int x)
2016-03-05 21:02:47
449
原创 【模板】(未完成)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
292
原创 【codevs】4633 树链剖分入门
之前的模板错了一个地方。。。调的时候怎么也不行。。。更新&&求解都需要在树链上爬一边。。。#include#include#define MAXN 249999 #define LL long long using namespace std;//use of mainLL n,m;//use of pre_starstruct edge{ LL nex
2016-02-28 15:13:42
380
原创 【理解】线段树中树链存储方式
线段树中树链存储方式回想建树方式:(从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
426
转载 [理解]树链剖分
转载请注明:http://blog.youkuaiyun.com/jiangshibiao/article/details/24669751【原题】1036: [ZJOI2008]树的统计CountTime Limit: 10 Sec Memory Limit: 162 MBSubmit: 4465 Solved: 1858[Submit][Status]Descripti
2016-02-19 17:33:19
1596
原创 【1056】图形面积
#include#include#define LL long long #define MAXN 150using namespace std;//use of mainint 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
521
转载 【理解】线段树——扫描线
原文:http://www.cnblogs.com/kane0526/archive/2013/02/26/2934214.html题目大意: 给你n个矩形,求他们的总面积之和。解题思路: 这是我写的线段树扫描线第一题,搜狗了一下,说实话网上的解释都很抽象,昨晚用手机百度一下看到了一张让人一看就有灵感的扫描线图,今天找了很久都没找到那张图了,本来还想copy一下给大家分享
2016-02-19 07:56:46
4412
原创 【模板】树状数组
//ATTANTION:// 可引入二维!!!! //use of mainint n;//use of arrint 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
294
原创 【模板】线段树
//use of mainint val[MAXN];//use of treestruct 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
303
原创 【模板】前向星+树链剖分+线段树
//use of pre_starint tail=0;int fst[maxn];struct edge{ int to,next; edge(){to=next=0'} }use[maxn];//use of partitionint fa[maxn],son[maxn];int size[maxn],top[maxn],dep[maxn];int po
2016-02-18 20:47:05
412
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人