
线段树
v5zsq
新的一天,新的不会
展开
-
Newcoder 16 C.Sum(线段树)
Description考虑维护一个这样的问题:(1) 给出一个数组AAA,标号为111~nnn(2) 修改数组中的一个位置。(3) 询问区间[l,r][l,r][l,r]中所有子集的位运算andandand之和mod(109+7)mod(10^9+7)mod(109+7)。我们定义集合S={l,l+1,...,r−1,r}S=\{ l , l+1 , ... , r-1 , r\}S={...原创 2018-11-01 12:10:15 · 450 阅读 · 0 评论 -
HDU 6155 Subsequence Count(dp+线段树)
Description给出一个长度为nn的0101串ss,两种操作:1.反转区间[l,r][l,r],即把00变成11,把11变成002.询问区间[l,r][l,r]中不同的子序列个数Input第一行输入一整数TT表示用例组数,之后输入两个整数n,qn,q分别表示串长和操作数,之后输入一个长度为nn的0101串,最后qq行每行一种操作(1≤T≤5,1≤n,q≤105)(1\le原创 2018-01-22 18:09:28 · 417 阅读 · 0 评论 -
CodeForces 283 E.Cow Tennis Tournament(线段树+组合数学)
Description给出nn个人的能力sis_i,谁能力强谁赢,做kk次操作,一个操作给出一个区间[l,r][l,r],所有能力介于这个区间的两个人输赢情况反转,问kk次操作后有多少三元组(a,b,c)(a,b,c)使得aa赢bb,bb赢cc,cc赢aa,两个三元组视为不同当且仅当其所含元素不同Input第一行两个整数n,kn,k,之后输入nn个整数sis_i表示第ii个人的能力,之后kk行每行两原创 2018-01-04 10:08:43 · 495 阅读 · 0 评论 -
CodeForces 587 E.Duff as a Queen(线性基+线段树+树状数组)
Description给出一个长度为nn的序列aia_i,有两种操作1 l r k1\ l\ r\ k: 表示将al,al+1,...,ara_l,a_{l+1},...,a_r每一个数都异或上kk2 l r2\ l\ r: 查询al,al+1,...,ara_l,a_{l+1},...,a_r这些数选取子集异或可以得到的不同数字个数Input第一行两整数n,qn,q表示序列长原创 2018-01-11 21:59:14 · 1087 阅读 · 0 评论 -
HDU 6110 路径交(线段树+在线倍增LCA)
Description给定一棵nn个点的树,以及mm条路径,每次询问第LL条到第RR条路径的交集部分的长度(如果一条边同时出现在22条路径上,那么它属于路径的交集)。Input第一行一个数nn(n<=5⋅105)(n<=5\cdot 10^5)接下来n−1n-1行,每行三个数x,y,zx,y,z,表示一条从xx到yy并且长度为zz的边 第n+1n+1行一个数mm(m<=5⋅105)(m<=5\cd原创 2017-09-28 16:53:07 · 714 阅读 · 0 评论 -
HDU 5306 Gorgeous Sequence(线段树)
Description一个长度为nn的序列a1,...,ana_{1},...,a_{n},有三种操作:0 x y t0\ x\ y\ t:对∀x≤i≤y\forall x\leq i\leq y,令ai=min(ai,t)a_{i}=min(a_{i},t)1 x y1\ x\ y:输出aia_{i}的最大值(x≤i≤y)(x\leq i\leq y)2 x y2\ x\ y:输出aia_{i}的原创 2017-08-27 16:14:29 · 699 阅读 · 0 评论 -
HDU 6070 Dirt Ratio(二分+线段树)
Description 给出n次提交的题目编号,对于一个区间,假设该区间中每个题的最后一次提交是AC,之前都是WA,求所有区间中AC数/提交次数最小值 Input 第一行一整数T表示用例组数,每组用例首先输入一整数n表示总提交次数,之后n个整数a[1]~a[n]表示这n次提交的题目编号(1<=T<=15,1<=n<=6e4,1<=a[i]<=n) Output 输出AC数/提交次数的最小值原创 2017-08-07 09:57:37 · 375 阅读 · 0 评论 -
HDU 6039 Gear Up(并查集+线段树)
Description 有n个齿轮,每个齿轮有一个半径rad[i],齿轮间有两种关系:共轴(角速度相同)或共边(线速度相同),保持两个齿轮之间不会同时出现这两种关系,且任意两个齿轮之间只有一条路径,有两种操作: 1 x y:把x齿轮的半径变成y 2 x y:给x齿轮角速度y,求所有齿轮中最大的角速度的自然对数值 Input 多组用例,每组用例首先输入三个整数n,m,q分别表示齿轮数,齿轮之原创 2017-08-06 13:51:58 · 889 阅读 · 0 评论 -
CodeForces 498 D.Traffic Jams in the Land(线段树)
Descriptionn+1n+1座城市,ii城市和i+1i+1城市之间有一条权值为aia_{i}的道路,设到达ii城市的时间是tt,如果ai|ta_{i}|t则通过该道路到i+1i+1城市用时为2,否则用时为1,有两种操作A x y:A\ x\ y:查询00时刻从xx城市出发到yy城市的用时C x y:C\ x\ y:将xx城市到x+1x+1城市道路的权值变为yyInput第一行一个整数nn表示道原创 2017-08-16 18:22:50 · 395 阅读 · 0 评论 -
CodeForces 833 B.The Bakery(dp+线段树)
Description 给出一个长度为n的序列,把其分成k段连续的子段使得这k段每段中不同数字的个数之和最大 Input 第一行两个整数n和k表示序列长度和要分成的段数,之后n个整数a[i]表示该序列(1<=n<=35000,1<=k<=min(n,50),1<=a[i]<=n) Output 输出分成k段后每段中不同数字个数之和的最大值 Sample Input 4 1 1 2 2原创 2017-07-31 13:30:28 · 739 阅读 · 0 评论 -
CodeForces 580 E.Kefa and Watch(hash+线段树)
Description 给出一个长度为n的数字串s,两种操作: 1 l r c:把s串中区间[l,r]中所有数字都变成c 2 l r d:查询子串[l,r]的是否以d为周期 注:一个串s以d为子串指的是d<=|s|且对任意1<=i<=|s|-d有s[i]=s[i+d] Input 第一行三个整数n,m,k分别表示串长,第一种操作数和第二种操作数,之后一个长度为n的数字串n,最后m+k行每原创 2017-07-21 11:55:00 · 732 阅读 · 0 评论 -
CodeForces 575 A.Fibonotci(矩阵快速幂+线段树)
Description F[0]=0,F[1]=1,F[n]=s[n-2]*F[n-2]+s[n-1]*F[n-1],n>=2,s序列是一个循环节为n的序列,但是有m个s[i]的值不等于s[i%n] (i>=n),求F[K]%p Input 第一行两个整数K和p表示求F[K]%p的值,然后输入一整数n表示s序列循环节,之后输入n个整数表示s[0]~s[n-1],再输入一整数m表示s序列中m个奇原创 2017-07-17 09:11:09 · 478 阅读 · 0 评论 -
CodeForces 85 D.Sum of Medians(线段树)
Description 定义一个k个元素的序列S={a[1],a[2],…,a[k]},a[i] < a[I+1]的值为,初始S为空,n种操作,操作有三种: add x:将x加入到集合S中 del x:将x从集合S中删除 sum:查询集合S的值 Input 第一行一整数n表示操作数,之后n行每行一个操作(1<=n<=1e5,x<=1e9) Output 对于每次sum操作,输出一个原创 2017-07-20 11:07:47 · 351 阅读 · 0 评论 -
SPOJ 24772 DWARFLOG - Manipulate Dwarfs(线段树)
Description n个数,第i个数是i,m种操作,操作分两种 1 x y:交换x和y两个数 2 A B:查询A A+1 … B-1 B这些数是不是在序列中占据连续的一段 Input 第一行两个整数n和m分别表示序列长度和操作数,之后m行每行一个操作(2<=n<=2e5,2<=m<=2e5,x!=y,A<=B) Output 对于每次查询,如果A A+1 … B-1 B占据序列的连原创 2017-07-15 17:22:51 · 346 阅读 · 0 评论 -
GYM 100801 J.Journey to the “The World’s Start”(二分+dp+线段树)
Description有nn个景点,景点之间通过缆车链接,上缆车需要票,有n−1n-1种票,第rr种票价格为prp_r,范围为r(1≤r≤n−1)r(1\le r\le n-1),范围为rr的票可以允许游客从第ii个景点到达第i−ri-r到第i+ri+r个景点中任意一个,进入第ii个景点游览需要did_i时间,第一个景点和最后一个景点不花时间,现在想买最便宜的票使得至多在mm时间内就可以从11原创 2018-01-17 14:06:39 · 372 阅读 · 0 评论 -
HDU 6162 Ch’s gift(树链剖分+线段树)
Description给出一棵nnn个节点的树,iii节点点权为cicic_i,mmm次查询,每次查询从sss节点到ttt节点的简单路径上,权值在区间[a,b][a,b][a,b]之间的点的权值和Input多组用例,每组用例首先输入两个整数n,mn,mn,m表示点数和查询数,之后输入nnn个整数cicic_i表示iii节点的点权,之后n−1n−1n-1行每行输入两个整数u,vu,vu,...原创 2018-02-10 16:01:46 · 435 阅读 · 4 评论 -
Newcoder 38 C.随机树(线段树)
Description平日里写hashhashhash的时候,总有某些选手由于脸黑而导致惨遭卡模数,然后一些恶意卡模数的出题人也因此身败名裂。为了防止被卡,我们用一种高级的随机方式来代替原来的线性随机生成,也就是所谓的随机树!现在有一棵编号为000~n−1n-1n−1的有根树,其中000是树的根。每个节点初始有一个值TiT_iTi。现在要求支持一下两种操作:1.1.1.给出两个正整数uuu...原创 2018-10-24 17:18:22 · 395 阅读 · 0 评论 -
Newcoder 144 I.Team Rocket(线段树+归并排序)
Description数轴表示一条铁路,给出该铁路nnn次列车的运行区间[li,ri][l_i,r_i][li,ri],现在有mmm个炸弹会炸毁铁路,其中第iii个炸弹会炸毁xix_ixi处的火车站,所有经过该火车站的列车均不能继续行驶,问每次炸毁一个火车站之后所影响的列车数(该列车之前可以行驶但炸毁后不能行驶),最后输入每趟列车是被哪个炸弹影响的Input第一行一整数TTT表示用例组...原创 2018-09-18 14:25:27 · 231 阅读 · 0 评论 -
Newcoder 143 F.take(线段树)
Description有nnn个盒子,第iii个盒子有pip_ipi概率有一个大小为did_idi的钻石,起初有一个大小为000的钻石,之后以此打开111~nnn这nnn个盒子,如果打开盒子后发现有一个比手头钻石更大的钻石则换成这个更大的钻石,问交换次数的期望值Input第一行一整数TTT表示用例组数,之后nnn行每行输入222个整数pi⋅100,dip_i\cdot 100,d_ipi...原创 2018-09-17 20:42:47 · 258 阅读 · 0 评论 -
HDU 6392 Reverse Game(线段树+并查集)
Description给出一n×nn×nn\times n的010101矩阵,每行每列连通,且每行第nnn个元素和第111个元素也连通,两种操作,第一种是反转一列,第二种是反转一个元素,每次操作过后查询整个矩阵中111连通块数量和000连通块数量Input第一行一整数TTT表示用例组数,每组用例首先输入一整数nnn,之后输入一个n×nn×nn\times n的010101矩阵,之后输入...原创 2018-09-10 13:24:01 · 328 阅读 · 0 评论 -
Newcoder 141 F.Sum Of Digit(数论+线段树)
Description对于一个十进制数字vvv,定义SOD(v)SOD(v)SOD(v):若v<16v<16vSOD(v)=vSOD(v)=vSOD(v)=v,否则SOD(v)=SOD(S(v))SOD(v)=SOD(S(v))SOD(v)=SOD(S(v)),其中S(v)S(v)S(v)为将vvv的十六进制每位数的和。现在给出一个由161616进制数组成的长度为nnn的字符串ss...原创 2018-09-16 07:58:13 · 272 阅读 · 0 评论 -
HDU 6356 Glad You Came(线段树)
Description给出一个长度为nnn的序列a1,...,ana1,...,ana_1,...,a_n,初始全是000,有mmm次操作,第iii次操作将区间[li,ri][li,ri][l_i,r_i]内所有数字与viviv_i取较大值,最后求∑i=1ni⊕ai∑i=1ni⊕ai\sum\limits_{i=1}^ni\oplus a_i,其中⊕⊕\oplus为异或操作Input首...原创 2018-09-06 08:20:20 · 272 阅读 · 0 评论 -
HDU 6315 Naive Operations(线段树)
Description给出排列bbb,序列aaa初始全为000,两个序列长度均为nnn,qqq次操作,操作有两种add l r:add l r:add\ l\ r:给区间[l,r][l,r][l,r]的每个值都加一query l r:query l r:query\ l\ r:查询∑i=lr⌊aibi⌋∑i...原创 2018-09-04 08:18:38 · 194 阅读 · 0 评论 -
CodeForces 75 D.Big Maximum Sum(dp+线段树)
Description给出nnn个序列,并从这nnn个序列选出mmm个构成一个新序列(每个元素是一个序列),问这个新序列的最大子段和Input 第一行两个整数n,mn,mn,m表示序列个数以及新序列所用序列的个数,之后nnn行每行首先输入该序列的长度,保证每个序列长度不超过500050005000,之后输入该序列,最后输入mmm个整数aiaia_i表示新序列中所用序列的编号(1≤n...原创 2018-07-14 13:03:06 · 305 阅读 · 0 评论 -
CodeForces 115 E.Linear Kingdom Races(dp+线段树)
Description有nnn条道路从左至右编号为111~nnn,道路均损坏,需要修补才能使用,第iii条道路修补的费用为cost[i]cost[i]cost[i],现在有mmm场比赛要举行,其中第iii场比赛需要使用[li,ri][li,ri][l_i,r_i]区间的道路,如果可以成功举办第iii场比赛则获利为pipip_i,且由于每场比赛时间不同故不需要考虑两场比赛场地冲突,问最大获利...原创 2018-07-17 09:36:19 · 469 阅读 · 0 评论 -
HDU 5893 List wants to travel(树链剖分+线段树)
Description给出一棵nnn个点的树,每条边有颜色,mmm次操作,操作分两种Change a b c:Change a b c:Change\ a\ b\ c:把从aaa点到bbb点路径上所有边的颜色变成cccQuery a b:Query a b:Query\ a\ b:查询a...原创 2018-04-05 12:37:22 · 332 阅读 · 0 评论 -
BZOJ 1012 最大数maxnumber(线段树)
Description现在请求你维护一个数列,要求提供以下两种操作:1、1、1、 查询操作。语法:Q LQ LQ\ L功能:查询当前数列中末尾LLL 个数中的最大的数,并输出这个数的值。限制:LLL不超过当前数列的长度。2、2、2、 插入操作。语法:A nA nA\ n 功能:将nnn加上ttt,其中ttt是最近一次查询操作的答案(如果还未执行过查询操...原创 2018-03-25 21:38:40 · 338 阅读 · 0 评论 -
计蒜客 16956 Query on a string(线段树)
Description给出两个字符串xxx和yyy,有两种操作:C i ch:C i ch:C\ i\ ch:把xxx字符串第iii个字符改成chchchQ L R:Q L R:Q\ L\ R:查询xxx字符串[L,R][L,R][L,R]区间中,yyy字符串出现了多少次Input第一行一整数TTT...原创 2018-03-02 10:03:59 · 265 阅读 · 0 评论 -
HDU 6183 Color it(线段树)
Description给一个平面网格图染色,有四种操作:0:0:0:清空所有颜色1 x y c:1 x y c:1\ x\ y\ c:给(x,y)(x,y)(x,y)染ccc颜色2 x y1 y2:2 x y1 y2:2\ x\ y_1\ y_2:查询以(1,y1...原创 2018-02-12 19:02:46 · 292 阅读 · 0 评论 -
CodeForces 629 D.Babaei and Birthday Cake(dp+线段树)
Description n个蛋糕,第i个蛋糕是一个底面半径为r高度为h的圆柱体,现在要用这些蛋糕摞成一个大蛋糕,要求是大编号的蛋糕摞在小编号的蛋糕上面,大体积的蛋糕摞在小体积的蛋糕上面,问最后摞起来的蛋糕总体积最大值 Input 第一行一整数n表示蛋糕数量,之后n行每行输入两整数r和h表示该蛋糕的底面半径和高度(1<=n<=1e5,1<=r,h<=1e4) Output 输出一个实数表示摞原创 2017-04-27 10:46:33 · 379 阅读 · 0 评论 -
CodeForces 620 E.New Year Tree(线段树)
Description 给出一棵以1为根的n个点的无向树,两种操作: 1 v c:把以v为根的子树全部染成c颜色 2 v:查询以v为根的子树中不同的颜色数 Input 第一行两整数n和m分别表示点数和操作数,之后n个整数c[i]表示初始状态每个点的颜色,之后n-1行每行两个整数u和v表示一条树边,最后m行每行一个操作(1<=n,m<=4e5,1<=c[i]<=60) Output 对于原创 2017-04-20 15:25:29 · 497 阅读 · 0 评论 -
HDU 4325 Flowers(线段树+离散化)
Description 给出n朵花的绽放时刻与凋谢时刻,并给出m次查询,每次查询一个时刻有多少朵花同时开放 Input 第一行为一整数t表示用例组数,每组用例第一行为两个整数n和m分别表示花的数量和查询的次数,之后n行每行两个整数s和e分别表示该朵花的绽放时刻和凋谢时刻,最后m行每行一个整数x表示查询在x时刻有多少朵花同时开放(1<=t<=10,1<=n,m<=10^5,1<=s<=e<=10原创 2015-12-06 17:45:19 · 613 阅读 · 0 评论 -
HDU 5238 Calculator(线段树+中国剩余定理)
Description 给定一个x和一个长度为n的操作序列,每个操作是一个运算(加/乘/幂)和一个数,现在有q个修改操作 操作一:输入x的值 操作二:修改操作序列中的一次操作 对于每次输入的x,输出表达式结果(mod 29393) Input 第一行一个整数t表示用例组数,每组用例第一行为两个整数n和m分别表示操作序列长度和修改次数,之后n行每行一个字符表示运算符和一个数字表示被运算数,原创 2015-12-06 17:34:47 · 1075 阅读 · 0 评论 -
POJ 2828 Buy Tickets(线段树)
Description 输入n个有序对,pi表示在第pi个位置后面插入一个值为vi的人,并且pi是不降的。输出最终得到的v的序列 Input 多组用例,每组用例第一行为有序对组数n,之后n行每行两个整数表示一个有序对,以n=0结束输入 Output 对于每组用例,输出最后得到的序列 Sample Input 4 0 77 1 51 1 33 2 69 4 0 20523原创 2015-07-11 17:42:49 · 706 阅读 · 0 评论 -
POJ 2886 Who Gets the Most Candies?(线段树)
Description n个熊孩子按顺时针排列,每个人手上都有一张牌,牌上有一个数字,从第k个孩子开始出队,出队的熊孩子卡上数字是K,则顺时针第k人是下一个出队的,负数则逆时针,第P个出队的会得到的糖果数是P的因子个数,输出得到最多糖果的人和他的糖果数,如果有多个,则输出最先出队的 Input 第一行为两个整数n和k表示熊孩子个数和第一次第k个熊孩子开始出队,之后n行每行为一个字符串和一个整原创 2015-08-29 08:28:24 · 864 阅读 · 0 评论 -
HDU 4027 Can you answer these queries?(线段树)
Description 给出n个数,m次操作,操作有两种: 1.0 a b:将区间[a,b]中的所有数都开更号(向下取整) 2.1 a b:查询区间[a,b]中元素之和 Input 第一行为一整数n表示序列长度,第二行n个整数ai表示这个序列,第三行为一整数m表示操作数,之后m行每行三个整数表示一次操作 (1<=n,m<=100000,0< ai<=2^63) Output 对于每次原创 2016-01-05 14:00:01 · 613 阅读 · 0 评论 -
LightOJ 1348 Aladdin and the Return Journey(树链剖分+线段树)
Description 一棵树,有n个点,每个点都有一个权值,有两种操作 0 a b ,问从节点a到节点b路径上所有点权值和 1 a b,把节点a权值改为b Input 第一行一个整数T表示用例组数,每组用例第一行为一个整数n表示树节点个数,第二行n个整数表示n个节点的权值1,之后n-1行每行两个整数a和b表示a和b有一条无向边,然后是一个整数m表示操作数,最后m行每行三个整数op u v原创 2015-12-06 12:38:29 · 620 阅读 · 0 评论 -
HDU 3966 Aragorn's Story(树链剖分+线段树)
Description 给一棵树,并给定各个点权的值,然后有3种操作 I C1 C2 K: 把C1与C2的路径上的所有点权值加上K D C1 C2 K:把C1与C2的路径上的所有点权值减去K Q C:查询节点编号为C的权值 Input 第一行为三个整数n,m和q分别表示点数,边数以及操作数,第二行n个整数表示n个节点的权值,之后m行每行两个整数a和b表示a和b之间有一条无向边,最后q行每原创 2015-12-06 13:00:19 · 639 阅读 · 0 评论 -
POJ 3237 Tree(树链剖分+线段树)
Description 一棵树有n个节点,n-1条边,每条边有一个权值,三种操作 CHANGE i v:将第i条边的权值改成v NEGATE a b:将a到b路径上所有边的权值取反(x->-x) QUERY a b:查询a到b路径上所有边权值的最大值 Input 第一行一个整数t表示用例组数,每组用例第一行一个整数n表示点数,之后n-1行每行三个整数a b c表示a点和b点之间有一条权值原创 2015-12-06 13:16:42 · 819 阅读 · 0 评论 -
HDU 1698 Just a Hook(线段树)
Description 对一个初始值都是1的区间[1,n]进行一些区间更新操作,每次将一个区间[a,b]的值更新为c,问更新后的区间和 Input 第一行为一整数T表示用例组数,每组用例第一行为一整数n表示区间大小,第二行为一整数q表示操作数,之后q行每行三个整数a,b,c表示将区间[a,b]的值都更新为c Output 对于每组用例,输出更新之后的区间和 Sample Input 1原创 2016-01-02 21:30:51 · 593 阅读 · 0 评论