摘要:
题目: 后缀数组模板题,做法参见罗穗骞论文。 自认为代码写得比较好看。#include#include#includeusing namespace std;#define MAXN 500000#define MAXD 200int array[4][MAXN*2+10],hei... 阅读全文
摘要:
题目分析:重点是把每个两个区间的询问拆分成四个单个区间的询问。 ans[l][r][u][v]=ans[l][v]-ans[l][u-1]-ans[r+1][v]+ans[r+1][u-1];#include#include#include#include#include#incl... 阅读全文
摘要:
题目 题目大意:求区间内可重复全排列的个数 分析:如果S是一个多重集,它有K个不同的类型元素,各元素分别为n1,n2,…,nk个,那么,S的r排列个数为n! / (n1!n2!…*nr!)。 所以当我们知道区间[l,r]的答案求[l,r+1]的答案时,ans[l][r+1]=ans... 阅读全文
摘要:
题目描述 辉辉热衷于洞穴勘测。某天,他按照地图来到了一片被标记为JSZX的洞穴群地区。经过初步勘测,辉辉发现这片区域由n个洞穴(分别编号为1到n)以及若干通道组成,并且每条通道连接了恰好两个洞穴。假如两个洞穴可以通过一条或者多条通道按一定顺序连接起来,那么这两个洞穴就是连通的,... 阅读全文
摘要:
题目: 树链剖分:#include#include#includeusing namespace std;#define MAXN 10024#define MAXLOG 14#define INF 0x7fffffffint n,T,size[MAXN+10],dep[MAXN... 阅读全文
摘要:
题目 先树链剖分,再根据dfn建立线段树(在同一根树链中的点dfn是连续的),然后,就很好做了。#include#define MAXN 100000int n,fa[MAXN+10],size[MAXN+10],pos[MAXN+10],length[MAXN+10],bl[MA... 阅读全文
摘要:
贴模板#include#includeusing namespace std;#define MAXN 500000using namespace std;int n;void Read(int &x){ char c; bool f=0; while(c=get... 阅读全文
摘要:
贴代码#include#includeusing namespace std;#define MAXN 500000int n,mi,ans;struct node{ int val,cnt,size; node *fa,*ch[2];}splay_tree[MAXN+... 阅读全文
摘要:
题目 平衡树模板题,包含区间删除操作。#include#includeusing namespace std;#define MAXN 100000int n,pre,bk,mi,ans,cg,size;struct node{ int val,pri,cnt,lsize,r... 阅读全文
摘要:
粘模板#include#includeusing namespace std;#define MAXN 500000int n,pre,bk;struct node{ int val,pri,cnt,lsize,rsize; node *ls,*rs;}treap_tr... 阅读全文