线段树
Duan2baka
人
展开
-
BZOJ[1984]月下“毛景树” 树链剖分+线段树
传送门ber~边权放到下面的点上,统计/修改时不算他俩的LCA Add时: ①上面已经有覆盖标记——覆盖标记+k ②没有覆盖标记——加标记+k 覆盖时 ①上面已经有加标记——加标记清零,覆盖标记打上 ①上面没有加标记——加标记清零,覆盖标记打上…代码如下:#include#include#include#define N 100020using namespac原创 2018-01-15 13:10:17 · 329 阅读 · 0 评论 -
BZOJ[1901]Zju2112 Dynamic Rankings 树套树(线段树套Splay)
传送门ber~少了几个操作的二逼平衡树 简化了我的Delete函数emmm行行行过几天打一遍主席树版本的(18/1/29UPD):线段树套树状数组看这里代码如下:#include#include#include#define INF 2147483647#define N 10020using namespace std;inline int read(){原创 2018-01-27 16:49:42 · 405 阅读 · 0 评论 -
BZOJ[3531][Sdoi2014]旅行 树链剖分+动态开点线段树
传送门ber~对每种信仰建一个线段树 显然这是MLE的 动态开点就好了!代码如下:#include#include#include#define N 100020using namespace std;inline int read(){ int x=0,f=1;char c; do c=getchar(),f=c=='-'?-1:f; while(!is原创 2018-02-05 14:22:34 · 431 阅读 · 0 评论 -
BZOJ[4499]线性函数 线段树
传送门ber~因为两个一次函数套起来也是一个一次函数 所以可以两两合并 就可以用线段树解决啦!代码如下:#include<ctype.h>#include<cstdio>#define MOD 1000000007#define N 200200using namespace std;inline int read(){ int x=0,f...原创 2018-02-10 16:08:55 · 359 阅读 · 0 评论 -
BZOJ[4999]This Problem Is Too Simple! 树链剖分
传送门ber~同BZOJ[3531]对每个权值开个动态开点线段树代码如下:#include<algorithm>#include<ctype.h>#include<cstdio>#include<map>#define N 100010using namespace std;inline int read(){ i...原创 2018-02-10 19:29:20 · 277 阅读 · 0 评论 -
BZOJ[1135][POI2009]Lyz 线段树
传送门ber~如果某时不合法,那一定存在某段满足 (r−l+1+d)∗k<Σl≤i≤rnumi" role="presentation" style="text-align: center; position: relative;">(r−l+1+d)∗kΣl≤i≤rnumi(r−l+1+d)∗kΣl≤i≤rnumi原创 2018-02-06 15:08:12 · 348 阅读 · 0 评论 -
BZOJ[3073][Pa2011]Journeys 线段树优化建图+Dijkstra堆优化
传送门ber~数组开太大会TLE…. 会TLE…. TLE…………咳咳,正常建图的话要一个点一个点那么指 区间指怎么办 可以想到线段树,开两个线段树A,B 线段树A的儿子指父亲,代表想从一个区间出发也可以由包含它的更大的区间出发 线段树B的父亲指儿子,代表能到达区间l...r" role="presentation" style="position: relative;">l.原创 2018-02-06 20:19:29 · 335 阅读 · 0 评论 -
BZOJ[2827]千山鸟飞绝 线段树
传送门ber~一个点跑到一个集合里,不止对自己有影响,也对这个集合中的所有东西有影响 一个一个改显然会炸 不妨打上修改标记,离散化后对每个点开个线段树,有东西加入时打上标记就好了 指针版不写内存回收MLE。。。麻麻我终于会写内存回收啦!代码如下:#include<algorithm>#include<ctype.h>#include<cstdio...原创 2018-03-08 16:49:00 · 378 阅读 · 0 评论 -
BZOJ[4516][Sdoi2016]生成魔咒 后缀数组+ST表+线段树
传送门ber~首先感谢Sinogi大佬的耐心讲解及代码题意就是每次加一个字符,统计本质不同的子串数量 正向添加字符不好做,考虑反着删字符 在正常情况下,删掉位置iii的一个字符会减少iii个子串(∑j<=ij=1sj...i∑j=1j<=isj...i\sum _{j=1}^{j∑j<=kj=1prej∑j=1j<=kprej\sum_{j=1}^{jprepr...原创 2018-03-25 22:52:43 · 414 阅读 · 0 评论 -
BZOJ[1901]Zju2112 Dynamic Rankings 树套树(树状数组+线段树)
传送门ber~对于不修改的区间k" role="presentation" style="position: relative;">kkk大,可以用主席树搞前缀和,但不支持修改 可以把前缀和用树状数组维护,logn" role="presentation" style="position: relative;">lognlogn\log_n修改,logn" role="presentatio原创 2018-01-29 13:19:41 · 328 阅读 · 0 评论 -
BZOJ[1018][SHOI2008]堵塞的交通traffic 线段树
传送门ber~哇这个线段树好神啊!!用线段树维护图连通性,每个节点开个二维数组ai,jai,ja_{i,j}表示这个区间最左面的第iii行能不能走到最右面的第jjj行,同时记录一下最左最右第一行与第二行是否都能互相走到 这六个东西可以用线段树维护啊(看代码)!细节有点多…具体看代码吧… 注释说的很清楚(自信)代码如下:#include<algorithm>#i...原创 2018-02-09 15:02:45 · 435 阅读 · 0 评论 -
BZOJ[4196][Noi2015]洛谷[2146]软件包管理器
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=41964196: [Noi2015]软件包管理器Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1874 Solved: 1069[Submit][Status][Discuss]Description Li原创 2017-08-16 18:39:24 · 314 阅读 · 0 评论 -
BZOJ[2733][HNOI2012]永无乡 线段树合并+并查集
题目链接 题目大意:给你n个点,每个点有权值k,现有两种操作:将两个点所在联通块合并,查询某个点所在联通块权值第k小是哪个数Splay启发式合并解法在这里这题输出的是点的编号不是点的值…. 对于每个点,开个权值线段树,合并操作用并查集查找,线段树合并 查询操作是权值线段树基本操作,找第kk小的数时,如果左儿子的数超过k个就在左儿子里,否则去右儿子找第k−ls−>sizk-ls->siz的数原创 2017-12-29 14:43:39 · 439 阅读 · 0 评论 -
BZOJ[4399]魔法少女LJJ 线段树合并
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=4399c<=7!!c<=7!!c<=7!!每新建一个节点,就开一个权值线段树,在连接时将两个线段树合并即可,对于操作3,4,直接查找比k大/小的数有多少个,查找时顺便将范围内的点删除,再全放在k上即可 操作五像平衡树那样随便搞一搞就可以了.. 对于操作六,根据对数的运算性质log(a∗b)=原创 2017-12-12 15:16:35 · 565 阅读 · 2 评论 -
BZOJ[4756][Usaco2017 Jan]Promotion Counting 线段树合并
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=4756裸的线段树合并 对于每个点建一个权值线段树这里采用了动态开点,常数较大(线段树范围是1~MAXN),但是省略了离散化代码如下:#include<ctype.h>#include<cstdio>#define N 100050using namespace std;const in原创 2017-12-09 15:37:59 · 371 阅读 · 0 评论 -
BZOJ[2157]旅游 树链剖分+线段树
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2157 DescriptionRay 乐忠于旅游,这次他来到了T 城。T 城是一个水上城市,一共有 N 个景点,有些景点之间会用一座桥连接。为了方便游客到达每个景点但又为了节约成本,T 城的任意两个景点之间有且只有一条路径。换句话说, T 城中只有N − 1 座桥。Ray 发现,有些桥上可以原创 2017-10-18 20:51:26 · 496 阅读 · 0 评论 -
BZOJ[3626][LNOI2014]LCA 树链剖分+线段树
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=3626Description给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。 设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。 有q次询问,每次询问给出l r z,求∑i≤ri=ldepLCA(i,z)\sum_{i原创 2017-09-19 21:59:01 · 673 阅读 · 0 评论 -
POJ[2299]Ultra-QuickSort 逆序对:线段树||树状数组||分治
题目链接:http://poj.org/problem?id=2299 题目大意:给n个数(n≤50000n\leq 50000),求逆序对数求逆序对是一种经典题型,今天整理一下(闲的蛋疼)各种写法的逆序对… 复杂度都是O(nlogn)O(n\log n) 树状数组的思想就是对于每个数找出之前有k个数比他大,这个k就是对答案的贡献可以用开个树状数组a[i]表示1~i有多少个数,则比i大的数原创 2017-09-06 22:02:47 · 379 阅读 · 0 评论 -
BZOJ[4034][HAOI2015]树上操作 树链剖分+线段树
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=4034 Description有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。 操作 3 :询问某个节点 x 到根的路径中所有点的点权原创 2017-08-28 21:21:16 · 501 阅读 · 0 评论 -
Noip[2011]Codevs[1135]洛谷[1311]选择客栈 清流解法,二分+线段树+树状数组
题目链接https://www.luogu.org/problem/show?pid=1311#sub 题目描述丽江河边有n 家很有特色的客栈,客栈按照其位置顺序从 1 到n 编号。每家客栈都按照某一种色调进行装饰(总共 k 种,用整数 0 ~ k-1 表示),且每家客栈都设有一家咖啡店,每家咖啡店均有各自的最低消费。两位游客一起去丽江旅游,他们喜欢相同的色调,又想尝试两个不同的客栈,因此决定分别原创 2017-08-26 12:50:31 · 524 阅读 · 0 评论 -
BZOJ[3638] Cf172 k-Maximum Subsequence Sum 线段树模拟费用流
传送门ber~因为k很小,所以很容易想到网络流…. 然后想了想不可做我就弃掉了….. 其实拿线段树模拟一下网络流的过程就可以了 在区间中贪心选出最大连续子段和,再将他们的值变成相反数,重复k次就可以了 维护的东西太多了,写起来好恶心…..代码如下:#include&amp;amp;lt;algorithm&amp;amp;gt;#include&amp;amp;lt;ctype.h&amp;amp;gt;#include原创 2018-07-07 13:23:48 · 307 阅读 · 0 评论