线段树
文章平均质量分 87
Neo__Z
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
NOIP模拟 Board
给出这样一棵“二叉树”:每个节点有左右两个儿子,并如下定义每个节点的高度:假设父亲节点的高度为 h ,那么他的两个儿子的节点的高度都是 h + 1 ,相同高度的所有节点称作一层。 每个节点的左儿子的子树都在右儿子的子树的左边,每一层相邻的两个节点之间有一条边。 下面是一个例子: 每一条图上的路径用一个字符串表示,字符串中的每一个字符表示一个移动。字符仅包含如下五种:1:表示移动到当前节点的左儿原创 2017-07-20 21:52:36 · 338 阅读 · 0 评论 -
codevs2492 上帝造题的七分钟 2【线段树】
题目大意:维护一个序列,支持区间开方(下取整)和求和操作。n<=100000,ai<=1e12.解题思路:一个数最多卡5、6次方就变为了1. 所以如果当前全为1,就不修改,否则暴力修改到底。 查询同普通线段树。#include<bits/stdc++.h>#define ll long longusing namespace std;cons...原创 2018-02-28 11:41:41 · 231 阅读 · 0 评论 -
bzoj2402: 陶陶的难题II【分数规划+树链剖分+线段树维护凸包】
DescriptionInput第一行包含一个正整数N,表示树中结点的个数。 第二行包含N个正实数,第i个数表示xi。 第三行包含N个正实数,第i个数表示yi 。 第四行包含N个正实数,第i个数表示pi。 第五行包含N个正实数,第i个数表示qi。 下面有N-1行,每行包含两个正整数a,b(1<=a,b<=N),表示树中的边。 第N+5行包含一个正整数M,表示...原创 2018-02-24 18:10:00 · 314 阅读 · 0 评论 -
bzoj2733: [HNOI2012]永无乡【线段树合并】
Description永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛 到达另一个岛。如果从岛 a 出发经过若干座(含 0 座)桥可以到达岛 b,则称岛 a 和岛 b 是连 通的。现在有两种操作:B x y 表示在岛 x 与岛 y 之间修建一座新桥。Q x k...原创 2018-03-04 16:30:33 · 239 阅读 · 0 评论 -
bzoj3694: 最短路【树链剖分+线段树&&最短路】
Description给出一个n个点m条边的无向图,n个点的编号从1~n,定义源点为1。定义最短路树如下:从源点1经过边集T到任意一点i有且仅有一条路径,且这条路径是整个图1到i的最短路径,边集T构成最短路树。 给出最短路树,求对于除了源点1外的每个点i,求最短路,要求不经过给出的最短路树上的1到i的路径的最后一条边。Input第一行包含两个数n和m,表示图中有n个点和m条边。 ...原创 2018-03-04 18:38:39 · 406 阅读 · 0 评论 -
bzoj3545&&3551: [ONTAK2010]Peaks离线&&在线【线段树合并&&kruskal重构树&&主席树】
Description在Bytemountains有N座山峰,每座山峰有他的高度h_i。有些山峰之间有双向道路相连,共M条路径,每条路径有一个困难值,这个值越大表示越难走,现在有Q组询问,每组询问询问从点v开始只经过困难值小于等于x的路径所能到达的山峰中第k高的山峰,如果无解输出-1。Input第一行三个数N,M,Q。 第二行N个数,第i个数为h_i 接下来M行,每行3个数a ...原创 2018-03-04 12:06:14 · 310 阅读 · 0 评论 -
bzoj4942: [Noi2017]整数【线段树+压位】
解题思路:比较容易想到线段树维护二进制数的进退位,然后把加的操作也拆成二进制分log次加减,但这样是O(n∗log230n∗log21e9)O(n∗log230n∗log21e9)O(n*log_230n*log_21e9),显然过不了。 考虑压位,用一个int表示连续30位的01状态,加减也最多会涉及两个int,而且进退位除了这两个,其余只会加减1,也只用记录区间内是否全为230−1230...原创 2018-04-08 21:06:58 · 387 阅读 · 0 评论 -
BJ模拟 String【后缀自动机+LCT+可持久化线段树】
题目描述:给你一个长度为n的字符串S,你需要维护这个字符串S并支持两种操作: 1、在字符串S末尾插入一个字符。 2、记字符串T为字符串S从第 l 个字符到第 r 个字符所构成的子串。询问字符串T中最长的子串使得该子串在T中出现过至少两次(例如:T=”ababa”,最长的子串应为aba,长度为3),并输出它的长度。如果不存在这样的子串,则输出0。 强制在线,n,m<=50000。...原创 2018-04-23 10:49:55 · 651 阅读 · 0 评论 -
BJ模拟 巡游计划【线段树】
题目描述:在遥远的精灵世界,有一个神奇的国度。这个国度由N座城市(从1到N编号)构成,其中1号城市是精灵们的首都,N号城市是精灵们的边疆。精灵国王每年都要从首都出发到边疆去巡游,沿途抚恤她的子民们:她每到一个城市i,就会花A[i]天的时间来巡游这个城市。精灵世界分布在不同的次元中,所以精灵们只能通过传送阵出行。他们每个城市有一个空间坐标,第i座城市的坐标为P[i],保证P[i]是[1,M]...原创 2018-04-25 21:25:21 · 212 阅读 · 0 评论 -
bzoj5294: [Bjoi2018]二进制【动态规划+线段树】
Descriptionpupil 发现对于一个十进制数,无论怎么将其的数字重新排列,均不影响其是不是333 的倍数。他想研究对于二进 制,是否也有类似的性质。于是他生成了一个长为n 的二进制串,希望你对于这个二进制串的一个子区间,能求出 其有多少位置不同的连续子串,满足在重新排列后(可包含前导0 )是一个3 的倍数。两个位置不同的子区间指开 始位置不同或结束位置不同。由于他想尝试尽量多的...原创 2018-05-10 15:13:57 · 865 阅读 · 0 评论 -
bzoj5291: [Bjoi2018]链上二次求和【线段树】
Description有一条长度为n的链(1≤i<<SSS为前缀和,SSSSSS为SSS的前缀和): ans=∑k=lr∑i=kn(Si−Si−k)ans=∑k=lr∑i=kn(Si−Si−k)ans=\sum\limits_{k=l}^r\sum\limits_{i=k}^{n}(S_i-S_{i-k})=∑k=lr(∑i=knSi−∑i=0n−kSi)=∑k=lr(∑i=kn...原创 2018-05-11 20:11:30 · 1791 阅读 · 0 评论 -
AtCoder[ARC073F] Many Moves【动态规划优化+线段树】
题目描述:有N个方格排成一排,它们按从左到右的顺序被编号为1,2,…,N。你有两个硬币,开始时分别被放在格A,B上,接下来你要按照顺序完成Q次操作:给定一个正整数xi,你要选出两枚硬币中的一枚移动到第xi格上。注意,你需要花费1s的时间将硬币移动一格。也就是说,将某一枚硬币从第X格移动到第Y格需要花费|X−Y|秒。你的任务是在最短的时间内完成所有的操作。你只能根据给定的操作...原创 2018-05-12 14:46:53 · 1095 阅读 · 0 评论 -
bzoj5286: [Hnoi2018]转盘【线段树】
传送门解题思路:首先有结论:最优方案一定是在某个起点等一会儿,然后一口气走完一圈,即先把原序列倍增: ans=minni=1{maxi+n−1j=i{Tj−(j−i)}+n−1}ans=mini=1n{maxj=ii+n−1{Tj−(j−i)}+n−1}ans=min_{i=1}^n\{max_{j=i}^{i+n-1}\{T_j-(j-i)\}+n-1\} 也等于: ans=min...原创 2018-05-08 17:16:24 · 248 阅读 · 0 评论 -
bzoj5077: [Ctsc2016]时空旅行【线段树+凸包】
Description2045年,人类的技术突飞猛进,已经找到了进行时空旅行的方法。小R得到了一台时空旅行仪,他想用它调查不同 时空中人类的发展状况。根据平行时空理论,宇宙中存在着很多独立的时空,每个时空在下一个时间点还会分化出 若干个不同的时空。宇宙是一个三维空间,人类使用空间直角坐标系来描述空间中的一个位置,三维坐标分别是 x ,y,z。我们假设在初始的时空(编号为 0)中,人类存在...原创 2018-05-22 17:04:55 · 595 阅读 · 0 评论 -
bzoj4105: [Thu Summer Camp 2015]平方运算【线段树】
DescriptionInput第一行有三个整数N,M,p,分别代表序列的长度、平方操作与询问操作的总次数以及在平方操作中所要模的数。接下来一行N个数代表一开始的序列{X1,X2,…,XN}。 接下来M行,每行三个整数op,l,r。其中op代表本次操作的类型。若op=0,代表这是一次平方操作,平方的区间为[l,r];如果op=1,代表这是一次询问操作,询问的区间为[l,r]。...原创 2018-05-22 20:56:49 · 455 阅读 · 0 评论 -
bzoj3995: [SDOI2015]道路修建【线段树维护最小生成树】
Description某国有2N个城市,这2N个城市构成了一个2行N列的方格网。现在该国政府有一个旅游发展计划,这个计划需要选定L、R两列(L<=R),修建若干条专用道路,使得这两列之间(包括这两列)的所有2(R-L+1)个城市中每个城市可以只通过专用道路就可以到达这2(R-L+1)个城市中的任何一个城市。这种专用道路只能在同一行相邻两列的城市或者同一列的两个城市之间修建,且修建需要花费...原创 2018-02-28 10:10:31 · 483 阅读 · 0 评论 -
bzoj1018: [SHOI2008]堵塞的交通traffic【线段树维护连通性】
Description 有一天,由于某种穿越现象作用,你来到了传说中的小人国。小人国的布局非常奇特,整个国家的交通系统可 以被看成是一个2行C列的矩形网格,网格上的每个点代表一个城市,相邻的城市之间有一条道路,所以总共有2C个 城市和3C-2条道路。 小人国的交通状况非常槽糕。有的时候由于交通堵塞,两座城市之间的道路会变得不连通, 直到拥堵解决,道路才会恢复畅通。初来咋到的你决心毛遂自...原创 2018-02-27 19:31:43 · 383 阅读 · 0 评论 -
NOIP模拟 序列操作【线段树】
题目大意:一开始有n个非负整数a[i],接下来会有m次操作,第i次操作给出一个数c[i],要求选出c[i]个大于0的数并将它们减一。 问最多能进行多少轮操作后无法操作(即没有c[i]个大于0的数)。解题思路:首先可以发现减1的c[i]个数一定是最大的c[i]个数,所以当第c[i]大的数等于0时就无法再操作了,那么我们将a[i]从大到小排序。注意到由于只减一,所以操作后除最小的一段数其余仍是单调递减原创 2017-11-07 20:22:27 · 351 阅读 · 0 评论 -
NOIP模拟 shopping【线段树 or Splay】
题目大意:有n中物品,其价值和价格分别为wi,piw_i,p_i,现有以下两种操作m个: 1 k w p:把第k个物品的价值和价格分别改为w和p; 2 k:每次买价值最大的物品中价格最低的(每种物品可无限购买),问k元最多能买到价值为多少的物品。(1<=n,m<=100000,1<=k,w,p<=1000000000)解题思路:我们可以将物品(一个修改也算一种物品)以w为第一关键字,p为第二关键原创 2017-11-07 19:54:23 · 278 阅读 · 0 评论 -
NOIP模拟 纸带 【线段树】【并查集】
题目大意:有一条无限长纸带,上面被划分成若干个格子。现在需要对其进行m次操作,第i此操作将[Li+1,RiL_i+1,R_i]上的数字改为i。问最后可以看到多少种数字。(1≤n≤10000001\le n\le 1000000,1≤L<R≤1091\le L<R\le 10^9)解题思路:先离散化。可以用线段树做,就是裸的标记下传,但这样可能会被卡常:#include<iostream>#incl原创 2017-10-31 20:20:48 · 331 阅读 · 0 评论 -
NOIP模拟 最佳序列【二分答案+线段树(单调队列)】
题目大意:给出一个长度为n的序列,求所有长度在[L,R]中的子段的平均值的最大值。(1<=n<=100000)。解题思路:考试时发现平均值根本没有规律可言,所以想到了二分答案,就变为了判定性问题。设二分答案为x,然后将所有数减去x,那如果有一个合法区间和大等于0,则说明该平均值较小,反之则较大。那如何判定呢?对于一个左端点i,则合法区间右端点j在[i+L-1,i+R-1]之间,该区间和为sum[j]原创 2017-11-02 19:10:26 · 632 阅读 · 0 评论 -
NOIP模拟 排列【权值线段树】
题目大意:对于一个1到n的排列,若知道每一位的逆序数(第i位a[i]的逆序数就是a[1]~a[i-1]中比a[i]大的数的个数),则能求出原排列。 现在对于排列{a[i]},给出{p[i]}。p[i]表示a[1]~a[i]的逆序数和。请你求出原排列。(1<=n<=100000)解题思路:先求出每个数的逆序数,仍设为p[i],倒着确定,那对于最后一个未确定的数a[i]来说,它前面有p[i]个比它大的原创 2017-11-04 14:07:35 · 346 阅读 · 0 评论 -
hdu4942 Game on S♂play【线段树 or LCT】
题目大意:给一棵二叉树,每个点有权值,定义每个点的size为其子树的权值和,每个点的有趣值为其子树内size值之积。要求支持左旋右旋操作(就像splay上一样),或是询问某个点的有趣值。解题思路:1.先说一下LCT的做法: 注意到每次旋转只会改变两个点(x,y)的size值,然后改变其父亲的有趣值(除以原来y的有趣值,乘以x新的有趣值),所以可以用LCT模拟旋转操作及维护每个点的原创 2017-12-30 13:12:13 · 378 阅读 · 0 评论 -
bzoj3924 幻想乡战略游戏【树链剖分+线段树】
解题思路:太蒟蒻了,不会动态点分治,只能链剖暴力移中心了,不过还好bzoj数据水。 很明显是求待修改下的带权重心,于是链剖建线段树维护每个点的权值,注意到一个子树在该线段树上编号是连续的(以前竟然没发现,惭愧……),所以以u为根的子树的权值和就是sum(pos[u]~pos[u]+size[u]-1)。 每次修改后暴力往更优的方向走就行了。#include<iostream>#include原创 2017-11-23 15:14:35 · 394 阅读 · 0 评论 -
bzoj2957: 楼房重建【线段树】
解题思路:题意即是要动态维护斜率的最长上升子序列。考虑线段树,对于线段树每个结点维护两个值:ans和maxl,ans表示只考虑这个区间的可视区间的答案,maxl表示这个区间的最大斜率。那么问题的关键就在于修改后如何合并两个区间(update),显然左区间的答案肯定可以作为总区间的答案的一部分,那么接下来就是看右区间有多少个在新加入左区间的约束后(即是maxl[k(注意文中左区间、左原创 2018-01-12 16:28:20 · 300 阅读 · 0 评论 -
bzoj3295 动态逆序对【树状数组套权值线段树】
解题思路:每次减少的逆序数即为在x前面比x大的数的个数加上在x后面比x小的数的个数,用树状数组套权值线段树维护即可。#include#include#include#include#include#define inf 0x7fffffff#define ll long long#define N 100005#define M 5000005using namesp原创 2017-12-19 11:05:12 · 371 阅读 · 0 评论 -
bzoj3196 二逼平衡树【线段树套Splay】
解题思路:其实线段树套线段树就可做,所以叫二逼平衡树。 不过还没写过线段树套Splay,所以练一下也是好的。 首先我们把平衡树中相同的值放在一个节点里,记个cnt,方便操作。操作1:只用去线段树上logn颗平衡树上找比k小的个数即可,最后记得加一。操作2:二分答案,再用操作一去检验,这就是线段树套Splay二逼之处,要O(log3n)O(log^3n) ,要是线段树套线段树就不用二原创 2017-12-19 08:29:34 · 322 阅读 · 0 评论 -
hdu4117 GRE Words【AC自动机+动态规划+线段树】
题目大意:给定n个字符串,要求按顺序取一些字符串,满足后一个字符串是前一个字符串的子串,要求使得取出的权值和最大。解题思路:先建出AC自动机,设f[i]f[i]表示选第ii个串做结尾的最大价值,那么有: f[i]=max(f[j])+w[i](ji并且j是i的子串)f[i]=max(f[j])+w[i](j找max(f[j])max(f[j])最朴素的方法就是沿着单词ii的每原创 2018-01-23 19:26:15 · 369 阅读 · 0 评论 -
bzoj3165: [Heoi2013]Segment【线段树+计算几何】
Description要求在平面直角坐标系下维护两个操作: 1.在平面上加入一条线段。记第i条被插入的线段的标号为i。 2.给定一个数k,询问与直线 x = k相交的线段中,交点最靠上的线段的编号。 Input第一行一个整数n,表示共n 个操作。 接下来n行,每行第一个数为0或1。 若该数为 0,则后面跟着一个正整数 k,表示询问与直线 x = ((k +las...原创 2018-02-26 15:00:02 · 295 阅读 · 0 评论 -
bzoj3878: [Ahoi2014&Jsoi2014]奇怪的计算器【线段树】
Description【故事背景】JYY有个奇怪的计算器,有一天这个计算器坏了,JYY希望你能帮助他写 一个程序来模拟这个计算器的运算。 【问题描述】 JYY的计算器可以执行N条预设好的指令。每次JYY向计算器输入一个正 整数X,计算器就会以X作为初始值,接着依次执行预设的N条指令,最后把 最终得出的结果返回给JYY。 每一条指令可以是以下四种指令之一:(这里a表示一个正整数。...原创 2018-02-26 17:43:40 · 315 阅读 · 0 评论 -
bzoj3693: 圆桌会议【线段树+Hall定理】
Description有n组人要一起开一个圆桌会议(编号为0~n-1),会议的圆桌上有m个位置(编号为0~m-1)。每个组有ai个人,他 们需要被安排在(li,(li+1)%m,(li+2)%m,…,ri)的座位范围内。每个座位只能安排一个人就坐,并且每个人 都需要被安排一个座位。现在你需要判断是否存在满足条件的座位安排。Input输入包含不超过10组数据。 第一行有一个数字...原创 2018-03-07 14:28:34 · 646 阅读 · 0 评论 -
loj#2537. 「PKUWC 2018」Minimax【概率dp+线段树合并】
传送门解题思路:感觉自己当时好菜啊……设 fu,ifu,if_{u,i} 为 uuu 选 iii 的概率,假如是从左子树转移来的,则fu,i=fl,i(p∑fr,j<i+(1−p)∑fr,j>i)fu,i=fl,i(p∑fr,j<i+(1−p)∑fr,j>i)f_{u,i}=f_{l,i}(p\sum f_{r,ji}) 然后想到线段树合并,节点表示选当前区...原创 2018-05-29 07:53:38 · 1218 阅读 · 0 评论
分享