非可持久化数据结构
文章平均质量分 73
AbEver
孤单是一个人的狂欢
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
洛谷 P3765 总统选举(线段树+treap)
题目背景黑恶势力的反攻计划被小C成功摧毁,黑恶势力只好投降。秋之国的人民解放了,举国欢庆。此时,原秋之国总统因没能守护好国土,申请辞职,并请秋之国人民的大救星小C钦定下一任。作为一名民主人士,小C决定举行全民大选来决定下一任。为了使最后成为总统的人得到绝大多数人认同,小C认为,一个人必须获得超过全部人总数的一半的票数才能成为总统。如果不存在符合条件的候选人,小C只好自己来当临时大总统。为了尽可能避免原创 2017-05-24 14:07:19 · 904 阅读 · 2 评论 -
BZOJ 3196: Tyvj 1730 二逼平衡树(一起来码树套树)
一道令人心情愉悦的树套树模板题原创 2017-12-05 17:37:31 · 573 阅读 · 1 评论 -
Codeforces contest 883 problem L. Berland.Taxi(Treap+优先队列)
题目传送门:HERE 就让它成为2017年的最后一篇博客吧 这道无脑数据结构题题面过长,翻译自寻。题解这是一道令人愉悦的巧妙的数据结构题。这道题,从爆零到AC用了我两天的时间。直接分析题目。非常明显,我们需要一些数据结构去处理车辆的调动。用堆来存储那些载客的车,记录那些正在载客车辆的编号与可调用的时刻。然后我们对于每一单,需要call那个离出发地最近的taxi,这点用线段树或者Tre原创 2017-12-29 14:42:41 · 663 阅读 · 1 评论 -
洛谷 P3987 我永远喜欢珂朵莉~(Splay+BIT+无限卡常)
就用它作为2018年的第一篇博客,借此表达我对珂学的热爱吧!原创 2018-01-24 13:55:33 · 1990 阅读 · 0 评论 -
洛谷 U18791 约幂数(线段树+二进制分解)
题面无法传送门题目大意就是给出一个区间[L,R],对于区间里的每个x,如果[1,n]中有一个y,使得y=(x<<<<k)+c,其中c比(1<<<<k)小,那么a[y]+=d。给出a序列和每次修改的区间[L,R],每次问你a中某个数的值。题解作为某场GDKOI膜泥赛的T1,这道题是很水的。然而一开始我想了一些乱七八糟的东西。对于修改直接考虑给区间[L,R]加权d,由于每次修改操作权可以叠加,所以搞个线原创 2018-01-24 14:36:26 · 371 阅读 · 0 评论 -
洛谷 P3401 洛谷树(hzh终于写出来的树链剖分)
植树门https://www.luogu.org/problemnew/show/P3401题解今天是植树节,所以我就植了一棵洛谷树。这题是某年GDKOI魔卡少女的强化版,将区间操作换到了树上,我们可以采用LCT或树链剖分来维护。不知道为什么,我就是想写树链剖分,大神hzh弃掉的树链剖分。这题的难点在于两处:一是区间上如何维护子区间的异或和,二是转到树上应该怎么剖。先考虑①:由于异或满足交换、结合律原创 2018-03-12 21:20:03 · 685 阅读 · 0 评论 -
UOJ #164. 【清华集训2015】V(神奇的线duang树)
传送门http://uoj.ac/problem/164题解题目大意 n个数,m次操作 1.区间加、减一个数并对0取max 2.区间赋值 3.单点查询当前值 4.单点查询 历史最大值 n,m≤5*10^5根据北大小姐姐的PPT,应该是这样的:线段树维护:f(x)=max(x+a,b)函数的当前值和历史最大值(一定也是一个同样形式的函数),即一个标记为(a,b,ma,mb)标记合并:原创 2018-03-01 17:12:28 · 451 阅读 · 0 评论 -
bzoj 2212: [Poi2011]Tree Rotations(线段树合并)
传送门http://www.lydsy.com/JudgeOnline/problem.php?id=2212题解首先,考虑一个节点的两棵子树,逆序对分为三种:①在左子树中的 ②跨越左右子树的 ③在右子树中的明显旋转左右子树只会改变第二种,于是我们从底往上做启发式合并,每个点开个treap,对于左右子树直接统计逆序对和旋转后逆序对个数,取少的那个。这样每次只处理跨子树的逆序对个数,类似分治,最后原创 2018-03-02 20:20:03 · 405 阅读 · 0 评论 -
BZOJ 3211: 花神游历各国(势能分析线段树)
才子词人,自是白衣卿相。原创 2018-03-02 22:07:35 · 959 阅读 · 0 评论 -
bzoj 3881: [Coci2015]Divljak(AC自动机+fail树+dfs序+lca+bit)
题目描述权限门题目大意:给一个字符串集合S、一堆操作。操作1就是在在另一个集合T中加入一个串P,操作2就是问你S中第x个串是T中多少个串的子串。|S|,q<=1e5,S中串总长度L1和T中串的总长度L2分别<=2e6。题解考虑把S集合里的串那去建AC自动机,然后每次读入一个P,它的贡献就是从它在树上能匹配到的节点,沿着fail指针一直往上跳能走到的所有点。于是直接对S集合的串建出fail树,然后每个原创 2018-03-22 16:13:38 · 532 阅读 · 0 评论 -
BZOJ 4311: 向量(线段树分治+凸包+三分)
Description你要维护一个向量集合,支持以下操作: 1.插入一个向量(x,y) 2.删除插入的第i个向量 3.查询当前集合与(x,y)点积的最大值是多少。如果当前是空集输出0Input第一行输入一个整数n,表示操作个数 接下来n行,每行先是一个整数t表示类型,如果t=1,输入向量 (x,y);如果t=2,输入id表示删除第id个向量;否则输入(x,y),查询 与向量(x,y)点积原创 2017-11-05 14:34:39 · 703 阅读 · 0 评论 -
tyvj4875 排列(单调栈)
Problem传送门Solution自从比赛我打错了这题的60分暴力后,我幼小的内心中留下了一道阴影。 多组数据一定要记得清空全局变量和数组啊啊啊!!! 甚至为了吸取教训,我还准备专门写一篇。。这题的60分做法就是固定左端点,随着右端点的右移更新最值并贡献答案。考虑100分的做法,当时良久都不知道怎么做,都在想有什么数据结构能大显神通,结果比赛后看了题解,发现做法很玄学。由于排列是随机的,暴力解原创 2017-09-29 22:20:24 · 490 阅读 · 0 评论 -
洛谷P3369 普通平衡树(Treap/Splay)
题目描述您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 1. 插入x数 2. 删除x数(若有多个相同的数,因只删除一个) 3. 查询x数的排名(若有多个相同的数,因输出最小的排名) 4. 查询排名为x的数 5. 求x的前驱(前驱定义为小于x,且最大的数) 6. 求x的后继(后继定义为大于x,且最小的数)输入输出格式输入格式:第一行为n,表示操作的个数,原创 2017-04-17 11:50:16 · 1928 阅读 · 1 评论 -
HDU 5412 CRB and Queries && BZOJ 3110: [Zjoi2013]K大数查询 (整体二分+树状数组/线段树)
题目传送门们HDU 5412 BZOJ 3110题目分析什么叫整体二分①假如给你一个区间,让你求区间第K小,你怎么做? =。=排序。。或者二分答案然后检验。②假如给你很多区间呢? 主席树。③假如带修呢? 树套树!线段树套树状数组/treap。其实没必要,直接上整体二分。整体二分是普通二分的进阶版,二分答案的同时,依据与答案的关系将所有的修改和询问分成左右两边再递归求解。整体二分可以解决求原创 2017-08-10 08:33:59 · 941 阅读 · 0 评论 -
SMOJ 2202 怪物 (整体二分+BIT)
题目描述输入格式第一行为数据组数。 对于每一组数据: 输出格式对于每一组数据: 共N行,第i行输出一个整数,表示第i个团队最早是在哪一轮攻击后就解散,或者-1.输入样例 1 3 5 1 3 2 1 3 10 5 7 3 4 2 4 1 3 1 3 5 2输出样例 3 -1 1题解这题是整体二分的果题,本来没有什么好讲的,但是蒟蒻原创 2017-08-13 19:25:20 · 446 阅读 · 0 评论 -
SMOJ 2201 D (线段树)
题目描述这是一道数据结构题。 我们拥有一个长度为n的数组a[i]。 我们有m次操作。操作有两种类型: 0 i val:表示我们要把a[i]修改为val; 1 l r k:表示我们要求出区间[l,r]的最多k个不相交子区间,并使得各个子区间的数的和尽量大,需要注意的是,我们也可以不选择区间,这时候数的和为0. N,m不超过10^5. 所有的ai和val的绝对值均不超过500.k不超过20.原创 2017-08-14 20:48:23 · 473 阅读 · 0 评论 -
COGS 2580. [HZOI 2015]偏序 II (CDQ分治+BIT)
题目传送门COGS 2580. [HZOI 2015]偏序 IISolution由于周围的神犇们都学了CDQ分治,菜鸡我整天对他们的讨论一头雾水,于是我也照葫芦画瓢地学了一发,然后就找了一道CDQ分治裸题,来自我愉悦一下。首先CDQ分治和整体二分有些相像,我个人的理解就是CDQ分治是注重过程的二分,整体二分则是直接二分答案,然后将操作划分。CDQ一般的套路就是将一段可看成修改和询问操的作序列按时间排原创 2017-09-01 20:02:56 · 742 阅读 · 2 评论 -
POJ1741 Tree (树上点分治/treap+启发式合并)
DescriptionGive a tree with n vertices,each edge has a length(positive integer less than 1001). Define dist(u,v)=The min distance between node u and v. Give an integer k,for every pair (u,v) of verti原创 2017-09-11 12:56:02 · 777 阅读 · 1 评论 -
SMOJ 1980 XOR (线段树)
Solution这就是棵裸的线段树,我一下就切掉了。话说最近考了好多好多道线duang树啊!感觉我自己都被duang掉了。由于异或不满足分配律,不能像矩阵那题一样直接对和进行异或操作。而异或是满足结合律的,于是我们可以对于多个异或标记进行合并。我们抓住异或的本质(别说抓不住),异或x就是如果x二进制的某一位是1,就将被异或的那个数的那一位1变成0,0变成1。我们就在线段树的叶子开一个大小为20左右的原创 2017-09-27 22:22:51 · 541 阅读 · 0 评论 -
BZOJ 1790: [Ahoi2008]Rectangle 矩形藏宝地(CDQ分治+离散化+线段树)
Description欢乐岛上最著名的游戏是一个寻宝游戏,小可可来到宝藏的埋藏地,这是一块开阔地,宝藏被分散的埋藏在这块地下,现在要做的是一件件的把宝藏挖出来。为了提示宝藏的埋藏点,游戏的主办方把这块开阔地当作第一象限,将所有可能埋藏宝藏的地方划成一个个矩形的土地,并把这些矩形土地的坐标都告诉了参赛者。挖宝的提示很简单,只要某一个矩阵土地至少被另外一个矩阵土地所包含,那么这个矩阵土地里肯定埋有宝藏。原创 2017-09-03 16:43:07 · 809 阅读 · 0 评论 -
洛谷 P1081 [NOIP提高组 2012] 开车旅行(线段树+离散化+树上倍增)
洛谷 P1081 [NOIP提高组 2012] 开车旅行 线段树 离散化 树上倍增原创 2017-09-29 17:55:29 · 708 阅读 · 0 评论 -
BZOJ 1014: [JSOI2008]火星人prefix(二分+Splay+Hash)
题目传送门点我思路复习一下Splay的基本(复杂)操作,字符串Hash什么的好久没写啦。用Splay维护Hash值即可,一开始我是写双Hash的,一直TLE(自带大常数的DS),实在受不了就改成单Hash了,是能过的。对于询问要二分一下,时间复杂度两个log。原创 2018-04-17 18:28:07 · 420 阅读 · 0 评论
分享