数据结构
outer_form
OI/ACM
展开
-
【树链剖分】[ZJOI2008]树的统计Count
题目 树链剖分,再存代码。#include<cstdio> #include<algorithm> #define MAXN 30000 #define MAXLOG 15 #define INF 0x7fffffff using namespace std; int m,n,size[MAXN+10],dep[MAXN+10],f[MAXN+10][MAXLOG+1],bl[MAXN+10],p原创 2015-11-15 22:12:58 · 543 阅读 · 0 评论 -
【树状数组】[BZOJ1878]HH的项链
题目大意DescriptionHH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH不断地收集新的贝壳,因此, 他的项链变得越来越长。有一天,他突然提出了一个问题:某一段贝壳中,包含了多少种不同 的贝壳?这个问题很难回答。。。因为项链实在是太长了。于是,他只好求助睿智的你,来解 决这个问题。 Input第一行:一个整原创 2016-08-14 11:17:43 · 412 阅读 · 0 评论 -
【再谈后缀自动机(入门)】[SPOJLCS2]Longest Common Substring II
题目大意 给出n个字符串n 分析 关于后缀自动机 复习过程中再看后缀自动机,把许多初学的时候没弄懂的问题解决了。 首先要明确后缀自动机的每个节点所表示的是一个终点等价类,从根节点走到叶子节点就对应一个后缀,lenlen表示这终点等价类中长度最长字符串的长度,这个中终点等价类中的字符串的长度连续,且长度短字符串的是长度长的的后缀,后缀边指向的节点所对应的字符串是这个节点对应的字符串原创 2016-04-08 08:36:28 · 682 阅读 · 0 评论 -
【树链剖分】[ZJOI2008][HYSBZ/BZOJ1036]树的统计Count
题目链接树链剖分模板题代码#include<cstdio> #include<algorithm> #include<cstring> #define INF 0x7fffffff using namespace std; #define MAXN 100000 int n,a[MAXN+10],b[MAXN+10]; void Read(int &x){ char c; while原创 2016-02-05 16:53:32 · 455 阅读 · 0 评论 -
【图论+线段树】[2016"百度之星" - 初赛(Astar Round2A)]Snacks
题目Problem Description 百度科技园内有n个零食机,零食机之间通过n−1条路相互连通。每个零食机都有一个值v,表示为小度熊提供零食的价值。由于零食被频繁的消耗和补充,零食机的价值v会时常发生变化。小度熊只能从编号为0的零食机出发,并且每个零食机至多经过一次。另外,小度熊会对某个零食机的零食有所偏爱,要求路线上必须有那个零食机。为小度熊规划一个路线,使得路线上的价值总和最大。Inp原创 2016-05-21 22:52:16 · 131 阅读 · 0 评论 -
【堆+模拟】[CodeForces-235E]printer
题目大意我们考虑一个有这样功能的网络打印机: 他从时刻 0 开始工作, 每一秒钟他打印一 页纸。 某些时刻他会收到一些打印任务。 我们知道打印机会收到 n 个任务, 我们将它们 分别编号为连续的整数 1~n, 并且第 i 个任务用三个参数描述: t_i 表示接到的时间, s_i 表示任务要求你打印多少张, 以及 p_i 表示任务的一个优先级。 所有任务的优先级互不 相同。 当一个打印机收到原创 2016-05-21 12:40:51 · 695 阅读 · 0 评论 -
【动态树LCT】[SDOI2008]洞穴勘测
题目描述 辉辉热衷于洞穴勘测。某天,他按照地图来到了一片被标记为JSZX的洞穴群地区。经过初步勘测,辉辉发现这片区域由n个洞穴(分别编号为1到n)以及若干通道组成,并且每条通道连接了恰好两个洞穴。假如两个洞穴可以通过一条或者多条通道按一定顺序连接起来,那么这两个洞穴就是连通的,按顺序连接在一起的这些通道则被称之为这两个洞穴之间的一条路径。 洞穴都十分坚固无法破坏,然而通道不太稳定,原创 2015-12-03 13:52:41 · 108 阅读 · 0 评论 -
【LCT维护最大生成树】[HDU5389]GCD Tree
题目 分析:由于wt(u,v)=gcd(u,v),所以我们枚举gcd,而且只尝试连接gcd和它的倍数,也就是我们尝试连接(i,j),仅当j是i的倍数,至于于为什么,我也不知道。 用LCT维护最大生成树,每次连接一条边时,必定形成一个环,删除这个环中最小边即可。#include<cstdio> #include<algorithm> #include<vector> using namespace原创 2015-12-17 22:08:08 · 1208 阅读 · 0 评论 -
【最长回文子串】【平衡树】[HDU5371]Hotaru's problem
题目 分析:用manacher求出以每个字符为中心的最长回文字串。 然后进行枚举。 若枚举到下标i,我们用两棵平衡树来存储在i前面,j+len[j]>=i的节点,其中一个按照j排序,另一个按照j+len[j]排序,根据第二棵平衡树的顺序进行遍历,将j+len[j]#include<cstdio> #include<algorithm> #include<queue> #include<ctim原创 2016-01-20 21:58:23 · 348 阅读 · 0 评论 -
【树的点分治】【平衡树】[POJ1741]Tree
题目大意给出一棵树,边带权,问有多少条长度路径<=k的路径。分析点分治暴力做法为O(n2)O(n^2)我们可以将统计所有路径转化为递归查找通过某个特殊点的路径,从而降低复杂度。将这个点定为重心,复杂度可以降低为O(nlogn)O(nlogn)复杂度分析重心有一个性质,如果以它为根,它的最大一个子树的大小不超过2tot\frac{2}{tot}。如果超过,那么在那棵子树里面一定有一个点它最大的子树小于原创 2016-02-25 17:25:28 · 697 阅读 · 0 评论 -
【伸展树(splay)】[JSOI2008][HYSBZ/BZOJ1014]火星人prefix
题目链接分析这道题有修改操作,显然不能使用后缀数组等数据结构。 我们可以用hash值来判断两个字符串是否相同,所以,我们可以用splay来维护出以当前字符为根的字符串的hash值,二分长度来求出LCQ(x,y)的值。代码这是top-down的splay#include<cstdio> #include<algorithm> #include<cstring> #define P 67 #defin原创 2016-02-12 23:40:57 · 427 阅读 · 0 评论 -
【高级数据结构】[SPOJ QTREE]树链剖分/动态树各一模板
题目: 树链剖分:#include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define MAXN 10024 #define MAXLOG 14 #define INF 0x7fffffff int n,T,size[MAXN+10],dep[MAXN+10],fa[MAXN+10][MAXLOG+原创 2015-12-01 13:16:35 · 486 阅读 · 0 评论 -
【树链剖分+线段树】[noi2015]软件包管理器
题目 先树链剖分,再根据dfn建立线段树(在同一根树链中的点dfn是连续的),然后,就很好做了。#include<cstdio> #define MAXN 100000 int n,fa[MAXN+10],size[MAXN+10],pos[MAXN+10],length[MAXN+10],bl[MAXN+10],Q,dfn[MAXN+10],dcnt,ed[MAXN+10]; bool f[MA原创 2015-11-28 23:43:46 · 482 阅读 · 0 评论 -
【伸展树】[CQBZOJ2803]普通平衡树splay top_down模板
贴模板#include<cstdio> #include<algorithm> using namespace std; #define MAXN 500000 using namespace std; int n; void Read(int &x){ char c; bool f=0; while(c=getchar(),c!=EOF){ if(c=='-原创 2015-11-28 23:19:57 · 108 阅读 · 0 评论 -
【Treap】[CQBZOJ2803]普通平衡树
粘模板#include<cstdio> #include<algorithm> using namespace std; #define MAXN 500000 int n,pre,bk; struct node{ int val,pri,cnt,lsize,rsize; node *ls,*rs; }treap_tree[MAXN+10],*tcnt=treap_tree,*roo原创 2015-11-18 22:21:06 · 76 阅读 · 0 评论 -
【伸展树】[CQBZOJ2803]普通平衡树splay模板
贴模板#include<cstdio> #include<algorithm> using namespace std; #define MAXN 500000 int n,mi,ans; struct node{ int val,cnt,size; node *fa,*ch[2]; }splay_tree[MAXN+10],*tcnt=splay_tree,*root; void原创 2015-11-21 10:21:32 · 423 阅读 · 0 评论 -
【Balanced Binary Tree】[NOI2004]郁闷的出纳员
题目 平衡树模板题,包含区间删除操作。#include<cstdio> #include<algorithm> using namespace std; #define MAXN 100000 int n,pre,bk,mi,ans,cg,size; struct node{ int val,pri,cnt,lsize,rsize; node *ls,*rs; }treap_tre原创 2015-11-19 13:22:00 · 72 阅读 · 0 评论 -
【树链剖分】[SPOJ-QTREE]Query on a tree
题目 模板题,存代码。#include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define MAXN 10024 #define MAXLOG 14 #define INF 0x7fffffff int n,T,size[MAXN+10],dep[MAXN+10],fa[MAXN+10][MAXLO原创 2015-11-15 20:54:26 · 372 阅读 · 0 评论 -
【NOI2016】网格
题目描述输入输出样例输入 4 4 2 1 1 4 4 2 3 1 1 2 2 2 2 1 1 2 2 1 1 0样例输出 2 1 0 -1分析我们很容易看出答案只有可能是2,1,0,-1。关于一些表述的解释 我们将蝈蝈所在格子称为障碍,其余格子称为空地。 根据题意,我们可以看做最外围也是一圈障碍,但是我们不去管它,一下所提到的障碍都不包括外围的一圈原创 2017-02-18 23:01:44 · 1702 阅读 · 0 评论