数据结构
Saikaai
这个作者很懒,什么都没留下…
展开
-
BZOJ 1503 [NOI 2004] 郁闷的出纳员 (splay)
题目链接:BZOJ 1503每次写数据结构,都有一种debug到心力交瘁的感觉,我比出纳员还郁闷啊= =。感觉自己写这道题被各种东西坑。它是求第k大的工资,我开始求的是第k小的工资。对于那些一开始的工资就小于标准线的,不计入离开公司的人数里。还有插入和删除各种恶心,每个都要递归处理。我开始写双旋root更新不了,最后只有改。好伤心啊,看来这几天我都得刷数据结构的题了QAQ。#include原创 2015-03-06 17:32:48 · 573 阅读 · 0 评论 -
BZOJ 2819 Nim (树链剖分+线段树)
题目链接:BZOJ 2819这道题我是用树链剖分+线段树做的,裸题啊。开始没有加入读入优化,结果就TLE了。反正我写的时间复杂度比较高。#include#include#includeusing namespace std;#define maxn (500000+5)int N,cnt=0;int a[maxn],head[maxn],fa[maxn],size[maxn],原创 2015-03-07 07:33:55 · 431 阅读 · 0 评论 -
BZOJ 3098 hash killer 2 (hash)
题目链接:BZOJ 3098这道题用生日攻击,根据原理在N个数中随机选数只需要随机选取sqrt(N)个数就会出现重复的数。那么我们只需要使字符串的长度取100000即可。子串的长度要取大一点,使得它的取法大于mod 1000000007,那么只要使子串的长度大于27即可。#include#include#include#includeusing namespace std;in原创 2015-03-06 14:03:02 · 476 阅读 · 0 评论 -
BZOJ 1500 [NOI 2005] 维修数列 (splay 模板)
题目链接:BZOJ 1500听说能将这道题写过splay就没有问题了吧= =。去看hzwer的博客他说遇到这种恶心的题,找一个好心的学长要一个板吧。所以我就用了他的板了。查错查了好久最后才发现是update中一个l写成了r。Orzzzzzzzzzzzz。#include#include#includeusing namespace std;#define inf (1e9)#de原创 2015-03-05 07:35:18 · 559 阅读 · 0 评论 -
BZOJ 1861 书架(splay)
题目链接:点击打开链接这道题我又是用来水模板的。。。再膜拜hzwer神犇。。。#include#include#includeusing namespace std;#define inf (1e9)#define maxn (80000+5)int N,M,root;int a[maxn],f[maxn],c[maxn][2],v[maxn],size[maxn],pos原创 2015-02-16 19:17:34 · 440 阅读 · 0 评论 -
BZOJ 3506 robotic sort (splay)
descriptioninput输入共两行,第一行为一个整数N,N表示物品的个数,1output输出共一行,N个用空格隔开的正整数P1,P2,P3…Pn,(1 sample input 163 4 5 1 6 2sample output 14 6 4 5 6 6sample input 243 3 2 1原创 2015-02-15 21:22:35 · 535 阅读 · 0 评论 -
treap 模板
该treap数据结构建立的树满足排序二叉树和堆的性质。即:t的左儿子的关键值小于t的关键值,t的右儿子的关键值大于t的关键值t的优先级大于它的儿子的优先级(标号越大优先级越大)下面是一个treap的模板,自己加了一点注释。struct node{ node *lc,*rc;//左儿子,右儿子 int key,rnd;//关键字,优先级 };node buffer原创 2015-02-12 22:33:09 · 469 阅读 · 0 评论 -
BZOJ 3110 (zjoi 2013)k大数查询(树套树)
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=3110我用的是线段树套线段树#include#include#includeusing namespace std;#define maxn (20000000+5)int N,M;int tot=0;int root[200000+5];int L[ma原创 2015-02-09 19:13:37 · 576 阅读 · 0 评论 -
BZOJ 3594 [SCOI 2014] 方伯伯的玉米田 (DP,树状数组优化)
题目链接:BZOJ 3594二维树状数组优化DP。首先写出暴力的动态转移方程:dp[i][j]=max{dp[o][p]}+1.其中满足o然后就是优化问题。对于条件p+a[o]-a[i]其中第一维是j+a[i],第二维是j。但是状态有可能由j=0的转移而来,所以我们将其整体右移一位即可。#include#include#includeusing namespa原创 2015-03-20 21:28:51 · 844 阅读 · 0 评论 -
Poj 3017 Cut the Sequence (DP,单调队列优化,数据结构优化)
题目链接:poj 3017论暴力姿势的优雅性。这道题直接用单调队列的大暴力居然过了,而且跑得很快。正解的话应该是用数据结构维护。时间复杂度为NlogN。先粘一个用单调队列优化的DP#include#include#includeusing namespace std;#define LL long long#define inf (1e18)const int m原创 2015-03-20 21:30:11 · 730 阅读 · 0 评论 -
重建 (树链剖分+线段树)
只是一个仅仅6KB的代码#include#include#includeusing namespace std;const int maxn = (int)1e5+10;int N,Q,k,tot=0;double xsum,xmin,xmax,count;int head[maxn],dep[maxn],fa[maxn],hv[maxn],anc[maxn],size[m原创 2015-03-23 20:29:17 · 458 阅读 · 0 评论 -
BZOJ 1208 [HNOI 2004] 宠物收养所 (splay)
题目链接:BZOJ 1208这道splay写的我还有什么话可说呢?一开始一直TLE,然后各种debug,最后才发现自己if语句写挂了= =。#include#include#include#includeusing namespace std;#define maxn (80000+10)int N,col=-1,root=0,idx=0,mod=1e6,t1,t2;long原创 2015-03-14 14:14:09 · 555 阅读 · 0 评论 -
codevs 1743 翻转卡片(splay)
题目链接:点击打开链接这道题作为一个入门题,我是用来练习splay模板的。。。虽然读题读了好久。#include#include#include#includeusing namespace std;#define maxn (300000+10)int N,root,ans=0;int a[maxn],c[maxn][2],f[maxn],size[max原创 2015-02-14 22:24:59 · 481 阅读 · 0 评论 -
BZOJ 3223 文艺平衡树 (splay)
题目链接:BZOJ 3223因为这几天被数据结构虐的各种不忍直视,所以我计划在这一段时间专攻数据结构。但是今天做这道很水的splay还是debug了很久QAQ。感觉这段时间状态好差= =。#include#include#includeusing namespace std;#define maxn (100000+10)int N,M,root,siz=0;int c[max原创 2015-03-05 20:47:29 · 467 阅读 · 0 评论 -
BZOJ 1036 [zjoi 2008] 数的统计 (树链剖分)
题目链接:BZOJ 1036这两天学了一下树链剖分,先来谈一谈我对树链剖分的理解吧~首先,树链剖分用于解决询问一棵树上两节点间的路径的情况(比如问节点u,v的路径中最大点权,最大边权,点权和等等。)对于这类问题,我们直接暴力求解会TLE时,就可以考虑用树链剖分。树链剖分的大体思路是将一棵树剖分成一些链,对于每条链用数据结构来维护,所有的链也用数据结构来维护(不同的题,选择的数据结构也不同)原创 2015-03-04 19:58:34 · 524 阅读 · 0 评论 -
BZOJ 1012[jsoi2008] 最大数maxnumber 线段树(或者是单调队列+二分)
题目链接:BZOJ 1012这道题是裸线段树,但也有神犇用单调队列+二分乱搞搞出来了。。。#include#include#includeusing namespace std;#define maxn (200000+5)int M,D,N=0;int T[maxn*4];void update(int x){ T[x]=max(T[x<<1],T[x<<1|1]);原创 2015-02-19 22:13:18 · 496 阅读 · 0 评论 -
zkw线段树 模板
自己被网络流狂虐,所以就写数据结构去了。。。下面这个模板还是罗雨屏神犇写的。。。我加了点注释。#include#include#include#define m (1<<20)void modify(int x,int v){//单点修改 x+=M;//M为大值,从叶子向上遍历 for(st[x]=v;x>1;x>>=1)//锁定叶子节点的值为v的向上遍历原创 2015-02-12 16:25:05 · 911 阅读 · 0 评论 -
线段树lazy操作
#include#include#includeusing namespace std;#define maxn 200000+10int n;int a[maxn];struct tree{int l,r;long long w,col;}t[4*maxn];void init(){freopen("mit.in",原创 2014-11-01 07:28:12 · 513 阅读 · 0 评论 -
UVA 11525 Permutation
[Description]给出K和K个数S1,S2,S3……,求这1,2,3……,K的字典序升序的第N个全排列(从0开始编号)。N是由以下公式计算得出:[Intput]第一行一个数T,表示有T(T[Output]T行,每行K个数,表示第N个排列[Sample Input]432 1 031 0 042 1 1 041 2 1 0原创 2014-10-21 22:08:13 · 445 阅读 · 0 评论 -
BZOJ 3555 [ctsc 2014] 企鹅QQ (hash)
题目链接:BZOJ 3555这道题我们枚举字符串的每个位置,计算出删去该位置的字符后该字符串的hash值,然后排序比较字符串间的hash值是否相同即可。计算每个字符的hash值可以乘以超过字符集的素数使其自然溢出。为了让运算简单,我们可以处理每个字符之前的hash值和之后的hash值。#include#include#include#includeusing namespace s原创 2015-03-06 10:37:13 · 774 阅读 · 0 评论 -
BZOJ 3132 上帝造题的七分钟 [tyvj 1716](关于树状数组)
自从看了这一篇文章,我才觉得我之前相当于没有学树状数组啊。Orz文章的链接:树状数组维护区间和的模型及其拓广的简单总结贴上我的模板吧。//////////////////////////////////////////////////////////一维树状数组 int lowbit(int x){ return x&(-x);}void modify(int x,int val原创 2015-03-05 21:57:56 · 589 阅读 · 0 评论 -
BZOJ 1293 生日礼物(堆)
开始手一抖,把最大值赋小了(我赋成了1e9,但是int的最大值为2147483648),所以各种WA。。。然后改了就A了。思路很简单,然后我用排序乱搞。。。#include#include#include#includeusing namespace std;#define inf (2147483646)int N,K;int C[100];struct node{ in原创 2015-02-17 21:44:11 · 461 阅读 · 0 评论 -
codevs 1080 (zkw线段树)
这道题我开始直接用普通的线段树写法,耗时53ms,然后我用zkw线段树写,耗时40ms。附上一个zkw线段树代码,其实就是练习模板的。。。#include#include#includeusing namespace std;#define M (250000)#define maxn (1000000+5)int N,m;int st[4*maxn];void chang原创 2015-02-15 22:02:56 · 637 阅读 · 0 评论 -
BZOJ 3221 花神游历各国 (线段树)
题目链接:BZOJ 3221最多进行5次操作,数将变为1,之后就不会改变。可以记录一个值col表示数是否需要开平方的操作。#include#include#include#includeusing namespace std;#define LL long longconst int maxn = 100000 + 10;int N, M;int a[ma原创 2015-04-13 21:03:34 · 607 阅读 · 0 评论