高级数据结构
文章平均质量分 88
线段树、树状数组、treap、splay、
K-Dtree、虚树、树剖
Jaihk662
这个作者很懒,什么都没留下…
展开
-
牛客练习赛31: D. 神器大师泰兹瑞与威穆(链表)
链接:https://ac.nowcoder.com/acm/contest/218/D来源:牛客网 题目描述「只要我拉动绳线,你就得随之起舞。」 ——泰兹瑞 泰兹瑞来到卡拉德许之后,由于他精湛的神器制造技术,可谓是过的如鱼得水。这次,他为自己打造了一个编辑器,称为威穆(Veim)。操作威穆时,有两种模式,具体操作如下。在 Norma...原创 2018-11-16 21:51:42 · 408 阅读 · 0 评论 -
栈模板
手写栈实现<stack>(伪)问题描述:给一个括号序列,问这个括号序列是否完全匹配#pragma once#include<cassert>#include<string.h>#include<iostream>template<class T, int size = 1050>class Stack{ public: ...原创 2018-04-09 00:31:44 · 311 阅读 · 0 评论 -
循环队列模板
手写循环队列实现<queue>(伪)#pragma once#include<stdio.h>#include<cassert>template<class T, int size = 50>class Queue{ public: Queue(): front(0), rear(0), count(0) {} void Ins...原创 2018-04-08 23:20:08 · 490 阅读 · 0 评论 -
数组类模板
数组类实现功能:可以定义任意类型动态数组,可以随时修改数组大小可以直接通过"="进行数组复制其它基本操作和普通数组一致#pragma once#include<cassert>#include<iostream>using namespace std;template<class T>class Array{ public: Array(int...原创 2018-04-08 21:48:00 · 351 阅读 · 0 评论 -
二叉树性质 && 四种遍历方式
二叉树基本概念:每个结点最多有两棵子树,左子树和右子树(有左右之分)性质:二叉树的第n层上最多有2^(n-1)个元素高度为h的二叉树最多有2^h-1个结点设一棵二叉树的叶子节点数为a,度为2的节点树为b,那么有a = b+1满二叉树:对于高度为h的满二叉树,节点树刚好为最大值2^h-1完全二叉树:对于高度为h的完全二叉树,若把第h层的节点全部删除,那么剩下的就是一棵高度为h-1的满二叉树第h层的叶...原创 2018-03-31 01:17:52 · 516 阅读 · 0 评论 -
HDU 5992 && 2016青岛ICPC: K. Finding Hotels(KD树)
Finding HotelsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Others)Total Submission(s): 1755 Accepted Submission(s): 546Problem DescriptionThere are N hote...原创 2018-09-09 00:38:53 · 728 阅读 · 0 评论 -
KD树--多维k近邻(HDU 4347: The Closest M Points)
The Closest M PointsTime Limit: 16000/8000 MS (Java/Others) Memory Limit: 98304/98304 K (Java/Others)Total Submission(s): 7068 Accepted Submission(s): 2158Problem DescriptionThe course...原创 2018-09-08 21:25:03 · 471 阅读 · 0 评论 -
KD树--二维最近点(HDU 2966: In case of failure)
In case of failureTime Limit: 60000/30000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2757 Accepted Submission(s): 1155Problem DescriptionTo help the...原创 2018-09-08 17:44:49 · 686 阅读 · 0 评论 -
bzoj 3611: [Heoi2014]大工程(虚树+树形DP)
把所有的点拉出来建棵虚树另一种建树步骤:①求出所有点的dfs序和深度d[],并对整棵树进行倍增LCA的预处理②对于每次查询,用一个栈维护,先让根进栈,之后按照dfs序遍历当次查询的所有点③对于当前点x,如果栈顶节点y是x的祖先,x进栈④对于当前点x,如果栈顶节点y不是x的祖先,不停地弹栈并连边,直到栈顶两个元素y和y'满足y'不是y的祖先⑤将lca与栈顶y连边(前提原创 2017-10-24 23:28:43 · 485 阅读 · 0 评论 -
虚树(bzoj 3572: [Hnoi2014]世界树)
例题:一棵n个节点的树,m次查询,每次查询给你一个点集U,对于树上的所有节点x(x∉U),你要找到一个点y(y∈U)满足y点离x点最近且标号最小,表示x点受y点管辖,而你的任务就是对于每次查询输出U集合中的每个点各管辖多少点n∑xim次查询,每次遍历整棵树显然不可能,但是从上面蓝色的条件可以得知平均每次询问的点是非常少的这样的话考虑每次只遍历询问的点复杂度就会从O(nm)到原创 2017-10-18 21:11:27 · 642 阅读 · 0 评论 -
bzoj 4127: Abs(树链剖分+线段树)
4127: AbsTime Limit: 40 Sec Memory Limit: 256 MBSubmit: 667 Solved: 225[Submit][Status][Discuss]Description 给定一棵树,设计数据结构支持以下操作 1 u v d 表示将路径 (u,v) 加d 2 u v 表示询问路径 (u,v) 上点权绝对值的原创 2017-10-16 00:29:36 · 430 阅读 · 0 评论 -
HDU 6162 && 2017 多校训练:Ch's gift(树链剖分)
题意:有一棵n个节点的树,m次查询,每次查询x, y, a, b表示节点x到y的路径上所有在[a, b]范围内的权值和树链剖分+线段树询问离线,按a和b分别排序求出所有小于a和所有小于b+1的权值和,然后相减就可以了因为排了序,所以更新当然只用单点逐一更新#include#include#include#includeusing namespace std;#原创 2017-08-22 17:59:04 · 1613 阅读 · 0 评论 -
bzoj 3626: [LNOI2014]LCA(离线差分+树链剖分)
3626: [LNOI2014]LCATime Limit: 10 Sec Memory Limit: 128 MBSubmit: 2885 Solved: 1133[Submit][Status][Discuss]Description给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。有q次询问,每次询问给出l r z,求sigma_{l<=i<=r}dep[LC原创 2017-08-02 16:25:59 · 536 阅读 · 0 评论 -
bzoj 4034: [HAOI2015]树上操作(树链剖分+线段树区间更新)
4034: [HAOI2015]树上操作Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 4981 Solved: 1603[Submit][Status][Discuss]Description有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加原创 2017-07-20 18:49:37 · 461 阅读 · 0 评论 -
树链剖分(bzoj 1036: [ZJOI2008]树的统计Count)
树链剖分:把一棵树剖分为若干条链,然后利用数据结构(树状数组,SBT,Splay,线段树等等)去维护每一条链,复杂度为O(logn),总体复杂度O(nlog²n)步骤:①将树的边分成重边和轻边,令siz[u]为u节点所有子节点的个数,v是u所有儿子中siz[]值最大的,那么边(u,v)就是重边,否则就是轻边深搜一次就好,顺便求出每个节点的深度和每个节点的父亲是谁原创 2017-06-26 14:10:40 · 774 阅读 · 0 评论 -
牛客网暑期ACM多校训练营(第三场): C. Shuffle Cards(splay)
链接:https://www.nowcoder.com/acm/contest/141/C来源:牛客网 题目描述Eddy likes to play cards game since there are always lots of randomness in the game. For most of the cards game, the very first step in th...原创 2018-07-26 17:17:17 · 324 阅读 · 0 评论 -
bzoj 1056 && 1862: [Zjoi2006]GameZ游戏排名系统(Treap+Hash)
1056: [HAOI2008]排名系统Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2783 Solved: 790[Submit][Status][Discuss]Description 排名系统通常要应付三种请求:上传一条新的得分记录、查询某个玩家的当前排名以及返回某个区段内的排名记录。当某个玩家上传自己最新的得分原创 2017-09-29 15:00:41 · 571 阅读 · 0 评论 -
bzoj 1552: [Cerc2007]robotic sort && bzoj 3506: [Cqoi2014]排序机械臂(splay区间翻转)
1552: [Cerc2007]robotic sortTime Limit: 5 Sec Memory Limit: 64 MBSubmit: 1206 Solved: 460[Submit][Status][Discuss]DescriptionInput输入共两行,第一行为一个整数N,N表示物品的个数,1第二行为N个用空格隔开的正整数,表示N个原创 2017-08-12 16:40:29 · 588 阅读 · 1 评论 -
splay区间翻转(bzoj 3223: Tyvj 1729 文艺平衡树)
每次翻转操作[l, r]直接将节点l-1翻转到根,将节点r+1翻转到根的右孩子这样r+1的左子树就是要翻转的区间了!将该子树中所有节点的两个儿子权值交换就好了直接暴力可能会超时,打延迟标记即可原创 2017-07-21 22:25:26 · 595 阅读 · 0 评论 -
Treap树堆(bzoj 3224: Tyvj 1728 普通平衡树)
splay:一种排序树(先序遍历权值有序)原创 2017-07-20 13:08:23 · 640 阅读 · 0 评论 -
splay伸展树基础操作(bzoj 1861: [Zjoi2006]Book 书架)
splay:一种排序树(先序遍历权值有序)主要性质:随着访问翻转次数的增多,复杂度越来越接近logn,形态也越来越接近平衡树主要功能:每次将要询问or删除or修改的点先一路翻转到根,然后再满足所需操作翻转规则如下:具体解析看代码1861: [Zjoi2006]Book 书架Time Limit:4 SecMemory Limit:64 MBSub原创 2020-04-15 16:33:33 · 851 阅读 · 0 评论 -
牛客小白月赛9: D. 树上求和(dfs序+线段树)
链接:https://ac.nowcoder.com/acm/contest/275/D来源:牛客网 题目描述给你一棵根为1的有N个节点的树,以及Q次操作。每次操作诸如:1 x y:将节点x所在的子树的所有节点的权值加上y2 x:询问x所在子树的所有节点的权值的平方和,答案模23333后输出输入描述:第一行两个整数N,Q第二行N个整数,第i个表示节点i的初始权值接下来N...原创 2018-11-18 00:02:26 · 777 阅读 · 0 评论 -
HDU 5975 && 2016ICPC大连 E: Aninteresting game(树状数组原理)
题意:有n个集合,第i个集合里面包含在范围[i-lowbit(i)+1, i]内的所有数有2种询问,1 x y表示集合a到集合b的长度和;2 x表示有多少个集合里面包含数字x对于第二个询问非常简单只要对x不停地+lowbit(x)就好了,看加多少次会超过n对于第一个询问,先看集合与长度的对应关系:集合:1 2 3 4 5 6 7 8长度:1 2原创 2017-08-20 19:05:45 · 609 阅读 · 0 评论 -
bzoj 4293: [PA2015]Siano(线段树)
4293: [PA2015]SianoTime Limit: 30 Sec Memory Limit: 256 MBSubmit: 452 Solved: 159[Submit][Status][Discuss]Description农夫Byteasar买了一片n亩的土地,他要在这上面种草。他在每一亩土地上都种植了一种独一无二的草,其中,第i亩土地的草每天会长高a[原创 2017-11-16 16:52:38 · 481 阅读 · 0 评论 -
VK Cup 2018 Round 2: D. Contact ATC(思维+树状数组)
E. Contact ATCtime limit per test 1 secondmemory limit per test 256 megabytesinput standard inputoutput standard outputArkady the air traffic controller is now working with n planes in the air. All pl...原创 2018-03-25 17:21:19 · 2158 阅读 · 0 评论 -
bzoj 3356: [Usaco2004 Jan]禁闭围栏(扫描线+树状数组)
3356: [Usaco2004 Jan]禁闭围栏Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 45 Solved: 26[Submit][Status][Discuss]Description 贝茜又做犯事了,约翰打算关她禁闭.他的农场建有N(1≤N≤250000)个矩形篱笆.围栏不重叠也互不接触,但足一个围栏可能包含一个或几个其他的围栏...原创 2018-03-19 20:15:18 · 610 阅读 · 0 评论 -
HDU 6183 && 2017广西邀请赛:Color it(线段树)
题目太长了就直接放链接吧http://acm.hdu.edu.cn/showproblem.php?pid=6183题意:一个空的坐标系,有④种操作:①1 x y c表示在(x, y)点染上颜色c;②2 X y1 y2表示查询在(1, y1)到(X, y2)范围内有多少种不同的颜色:③0表示清屏;④3表示程序退出(0主要就是前两个操作,后面两个操作就是多实例的意原创 2017-08-31 18:37:06 · 1324 阅读 · 3 评论 -
bzoj 2733: [HNOI2012]永无乡(线段树启发式合并)
2733: [HNOI2012]永无乡Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3850 Solved: 2061[Submit][Status][Discuss]Description永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来原创 2017-08-30 14:32:51 · 475 阅读 · 0 评论 -
HDU 4553:约会安排(区间合并)
[kuangbin带你飞]专题七 线段树--Problem M题目地址问题概述: 小明一共有T的空闲时间,期间会有很多基友和女神来找小明,DS a代表一个基友来找小明约一段长为a的时间;NS b则代表一个女神长为b分钟的请求;STUDY!! a b表示小明决定在a b时间段专心学习。现有以下规则:①若小明决定学习,则会推掉这个时间段所有的约定,并输出"I am the hope原创 2016-06-28 22:21:55 · 1291 阅读 · 0 评论 -
bzoj 1901: Zju2112 Dynamic Rankings(离线树状数组+主席树)
回想一样不带查询的区间第K大离散化+去重就不说了,n个点分别建立n棵线段树第i棵线段树中保存前i个数中每个数出现的个数这样每次查询区间[a, b]时直接将第b棵树减去第a-1棵树就可以logn查询了但是很显然无法修改……先记录所有查询和修改,将一开始的数和后来修改出现的数离散化+去重原创 2017-08-10 20:46:50 · 543 阅读 · 0 评论 -
二维树状数组(bzoj 1452: [JSOI2009]Count)
1452: [JSOI2009]CountTime Limit: 10 Sec Memory Limit: 64 MBSubmit: 2496 Solved: 1451[Submit][Status][Discuss]DescriptionInputOutputSample InputSample Output原创 2017-08-07 23:44:29 · 461 阅读 · 0 评论 -
树状数组--快捷的线段树
问题概述:先输入一个数n,接下来输入n个数,然后输入一个指令,其中(Add i j)i和j为正整数,表示第i个营地增加j个人,(Sub i j)i和j为正整数,表示第i个营地减少j个人,(Query i j)i和j为正整数,i数,(End)表示结束,这条命令在每组数据最后出现,对于每个Query询问,输出该区间中的总人数(T组实例)输入样例:原创 2017-08-07 23:29:09 · 404 阅读 · 0 评论 -
线段树基础操作--单点or区间更新+查询
问题概述:先输入一个数n,表示一个班有n个人,一开始每人手中都有一个糖果,后输入一个数m并进行m次操作,每次操作a、b、c表示从第a个人到第b个人每个人重新分配得到c个糖果,求最后一个班所有人的总糖果数输入样例: 对应输出:1原创 2017-07-20 17:34:56 · 402 阅读 · 0 评论 -
qscoj:喵哈哈村的冒菜店(线段树区间合并)
喵哈哈村的冒菜店发布时间: 2017年3月19日 16:00 最后更新: 2017年3月19日 16:01 时间限制: 1000ms 内存限制: 128M描述喵哈哈村的冒菜店开张了,这里的冒菜特别好吃。星星同学听闻后,就准备去吃冒菜。星星同学开着自己才花了几十万买的宝马X5,就开进了冒菜店的停车场。就在她停车的过程中,她发现一个有趣的现象,喵原创 2017-03-24 19:44:35 · 539 阅读 · 0 评论 -
POJ 2104:K-th Number(主席树)
K-th NumberTime Limit: 20000MS Memory Limit: 65536KTotal Submissions: 50411 Accepted: 17188Case Time Limit: 2000MSDescriptionYou are working for Macrohard原创 2016-10-08 10:41:47 · 433 阅读 · 0 评论 -
bzoj 1798 && 5039: [Jsoi2014]序列维护(线段树)
5039: [Jsoi2014]序列维护Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 17 Solved: 14[Submit][Status][Discuss]DescriptionJYY 有一个维护数列的任务。 他希望你能够来帮助他完成。JYY 现在有一个长度为 N 的序列 a1,a2,…,aN,有如下三种操作:原创 2017-09-04 15:59:49 · 733 阅读 · 0 评论 -
bzoj 1645: [Usaco2007 Open]City Horizon 城市地平线(线段树扫描线)
1645: [Usaco2007 Open]City Horizon 城市地平线Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 732 Solved: 333[Submit][Status][Discuss]DescriptionFarmer John has taken his cows on a trip to the ci原创 2017-09-12 01:03:58 · 584 阅读 · 0 评论 -
bzoj 5029 && poj 2528 && nyoj 1009: 贴小广告(线段树)
5029: 贴小广告Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 161 Solved: 101[Submit][Status][Discuss]Description现在有一堵墙,墙上分为若干个单元。接下来会来n个人在墙上贴小广告。每次每个人选择墙上连续一段的单元贴上自己公司与众不同的小广告。因为小广告可能会出现被覆盖的原创 2017-10-27 11:55:33 · 441 阅读 · 0 评论 -
bzoj 3378: [Usaco2004 Open]MooFest 狂欢节(BIT)
3378: [Usaco2004 Open]MooFest 狂欢节Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 88 Solved: 57[Submit][Status][Discuss]Description 每一年,约翰的N(1≤N≤20000)只奶牛参加奶牛狂欢节.这是一个全世界奶牛都参加的大联欢.狂欢节包括很多有趣的活动,比如干草堆叠...原创 2018-03-09 15:28:38 · 345 阅读 · 0 评论 -
bzoj 1878: [SDOI2009]HH的项链(主席树)
1878: [SDOI2009]HH的项链Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 5317 Solved: 2624[Submit][Status][Discuss]DescriptionHH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH不断地收集新的贝壳,...原创 2018-02-15 18:14:19 · 418 阅读 · 0 评论