
模板
ureaster
这个作者很懒,什么都没留下…
展开
-
模板:母函数
hdu 1398```People in Silverland use square coins. Not only they have square shapes but also their values are square numbers. Coins with values of all square numbers up to 289 (=17^2), i.e., 1-原创 2017-10-17 20:44:27 · 228 阅读 · 0 评论 -
树状数组 区间修改 区间查询
#include#include#define lowbit(x) (x&-x)#define LL long long#define N 100005int n,q,x,y,z;LL a0[N],a1[N],a2[N];char c;void read(int &t) { t=0; int f=1; for(;!isdigit(c=getchar());) if(原创 2017-12-01 22:48:59 · 209 阅读 · 0 评论 -
洛谷P2617 Dynamic Ranking 树状数组套主席树
#include#include#include#define lowbit(x) (x&-x)#define N 10005using namespace std;int n,m,a[N],b[N*2],s[N][3],len;char c;int rt[N],val[N*400],lch[N*400],rch[N*400],cnt;int L[20],R[20],llen,r原创 2017-12-15 19:17:35 · 297 阅读 · 0 评论 -
文艺平衡树
#include#define N 100005int n,m;int root,fa[N],ch[N][2],size[N],rev[N];void swap(int &a,int &b) { a^=b, b^=a, a^=b;}int son(int t) { return t==ch[fa[t]][1];}void pushup(int t) { si原创 2017-12-07 18:22:19 · 256 阅读 · 0 评论 -
树链剖分:洛谷 P2590 [ZJOI2008]树的统计
一共三部分:树剖,线段树,LCA难打主要是因为代码长#include#include#include#define mid (l+r>>1)#define N 30005#define M 19#define INF 1128481604int n,q;int mx[N<<2],sum[N<<2];int head[N],next[N<<1],to[N<<1];int原创 2017-12-30 17:59:50 · 257 阅读 · 0 评论 -
树上区间和1
#include#define lowbit(x) (x&-x)#define N 100005int n,q,w[N];int head[N],next[N<<1],to[N<<1];int fa[N],son[N],dep[N],size[N],top[N],num[N],pos[N];void add(int a,int b) { static int cnt=0; to[+原创 2017-12-28 18:58:39 · 255 阅读 · 0 评论 -
洛谷 P3806 【模板】点分治1
#include#include#include#define K 10000005#define N 10005using std::max;int n,m;int hd[N],nxt[N<<1],to[N<<1],w[N<<1];int vis[N];int rt,sz[N],siz[N];int son[N],dfn[N],cnt;bool mp[K];void ad原创 2018-01-06 13:06:48 · 573 阅读 · 1 评论 -
分块*2
洛谷 P3203 [HNOI2010]BOUNCE 弹飞绵羊#include#include#define N 200255#define M 450int n,q,a[N];int stp[N],nxt[N];void build() { memset(nxt,66,sizeof nxt); scanf("%d",&n); for(int i=原创 2018-01-06 13:08:53 · 238 阅读 · 0 评论 -
无向连通图的割点和桥
割点#include#define N 100005using namespace std;int n,cnt;int hd[N],nxt[N<<1],to[N<<1],tot;int dfn[N],low[N],now;int ans[N];void add(int a,int b){ to[++tot]=b; nxt[tot]=hd[a]; hd[a]=tot;原创 2018-02-25 09:03:57 · 265 阅读 · 0 评论 -
郁闷的出纳员
splay真的很慢#include#include#define N 100005#define INF 100000007int m,lowst,o,tmp,leave;char c;int root,fa[N],ch[N][2],val[N],size[N],cnt;int son(int t) { return t==ch[fa[t]][1];}void pushu原创 2017-12-08 19:07:04 · 280 阅读 · 0 评论 -
我的第一棵平衡树-SB树
数组实现的SB树(而且竟然没有结构体)功能就和普通的二茬查找树一样:insert: 插入元素erase: 删除元素pre: 查询一个元素的前驱suc: 查询一个元素的后继select: 返回第几小的元素的值rank: 返回一个值的位置除了maintain全部非递归实现,并且有assert(似乎并没有什么用)maintain写得不是很高效,并且缺储存平衡树中元原创 2017-11-07 16:32:45 · 2294 阅读 · 1 评论 -
我的第二棵平衡树: 普通Treap
这又是洛谷平衡树的模板题...[SBT的写法]Treap的代码很短,只是在普通二茬查找树的插入操作和删除操作中加入维护堆性质的rotate,形式也和堆很像,插入时将新节点不断向上抬,删除时将节点向下降直至弹出.随机种子的选取可以用一些玄学的方法(来自网上某位大佬)inline int random() { static int seed=48271; return原创 2017-11-09 13:30:22 · 262 阅读 · 0 评论 -
rbtree
#include#includestruct RBtree{ struct Node { int val,color,lr; Node *fa,*lch,*rch; Node():fa(NULL),lch(NULL),rch(NULL) {} Node(int x,int islr,Node *pre):val(x),color(1),lr(islr),fa(pre),l原创 2017-10-27 18:35:48 · 238 阅读 · 0 评论 -
模板:高精度
#include#include#includeusing namespace std;const int N=1024;struct int1024 { char arr[N]; int len,neg; int1024():len(0),neg(1) { memset(arr,0,sizeof arr); } void read() { scanf("%s",arr原创 2017-10-19 20:59:54 · 271 阅读 · 0 评论 -
模板..
#include#includestruct RBtree { struct Node { int val,color; Node *lch,*rch; Node():val(0),color(0),lch(NULL),rch(NULL) {} }; Node *root; void insert(int x)};原创 2017-10-21 16:32:26 · 186 阅读 · 0 评论 -
模板:块状链表
#include#includeusing namespace std;int max(const int x,const int y) { return x>y?x:y;}int min(const int x,const int y) { return x<y?x:y;}struct Block { static const int M=10; static int p;原创 2017-10-12 17:27:28 · 335 阅读 · 0 评论 -
模板:vector
#include#include#includetemplate class vector {private: int max_size; T *arr; void resize() { T *na=new T[2*max_size]; memcpy(na,arr,max_size*sizeof(T)); delete[] arr; max_size*=2; arr=原创 2017-10-13 08:50:53 · 236 阅读 · 0 评论 -
模板:强连通分量和缩点
洛谷 P2002 消息扩散缩点后输出入度为0的点(tarjan)#include#include#include#define N 100010#define M 500010using namespace std;int n,m,x,y,Q[M],dfn[N],low[N],inq[N],p[N],in[N],tail,now,size,ans;vectorg[N];原创 2017-10-30 14:46:13 · 348 阅读 · 0 评论 -
LCA的三种求法 - HDU 2586
Tarjan一遍 大法师 处理所有询问, 每次递归处理子树, 把子树与当前节点的并查集合并. 然后如果一个询问的两个节点都被访问, 直接输出答案#include#include#includeusing namespace std;int T,n,m,a,b,c,p[40010],vis[40010],dep[40010],ans[210];vector >g[40010];v原创 2017-10-30 17:37:29 · 262 阅读 · 0 评论 -
模板:list
起始数组编号:0包含函数:size,operator[],push_back(val),insert(pos,val)(在pos前插入val),erase(pos),find(val);(return -1)压行前#include#include#includeusing namespace std;//array numbered fr原创 2017-10-13 12:30:29 · 189 阅读 · 0 评论 -
非旋treap
#include#define N 100005using namespace std;int rt,val[N],lch[N],rch[N],pro[N],sz[N],cnt;int rnd(){ static int sd=4234; return sd*=3423;}int node(int v){ val[++cnt]=v; pro[cnt]=rnd(); sz[原创 2018-02-25 10:27:36 · 250 阅读 · 0 评论