数据结构—线段树
slongle_amazing
这个作者很懒,什么都没留下…
展开
-
[CodeVS1080] 线段树练习(单点修改+求和)
线段树练习题目描述 Description一行N个方格,开始每个格子里都有一个整数。现在动态地提出一些问题和修改:提问的形式是求某一个特定的子区间[a,b]中所有元素的和;修改的规则是指定某一个格子x,加上或者减去一个特定的值A。现在要求你能对每个提问作出正确的回答。1≤N<100000,,提问和修改的总数m<10000条。输入描述 Input Description输入文件第一行为一个整数N,接下原创 2015-07-25 12:53:28 · 388 阅读 · 0 评论 -
[BZOJ1858] [Scoi2010]序列操作
传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1858题目大意给定一个01序列每次操作 0:[L,R]都变0 1:[L,R]都变1 2:[L,R]0变1,1变0 3:查询[L,R]区间内1个数 4:查询[L,R]区间内最长连续1个数题解明显线段树 维护 1.区间和 2.左端点开始连续0个数 3.右端点开始连续0个数 4.最长原创 2015-11-29 22:51:35 · 546 阅读 · 0 评论 -
最大连续长度不超过m的子序列和
题目大意给定长度为n的序列,取出其中长度不超过m的连续一段,求最大题解ans=max{sum[i]−sum[j−1]} (i>=j−1且1<=j−i+1<=m)ans=max\{sum[i]-sum[j-1]\}~~~(i>=j-1且1<=j-i+1<=m) 很明显这是O(N2)O(N^2)的暴力 对于位置i它前面sum[j-1]最小即可,也就是静态查询区间最小(ST表/线段树) 我们优化原创 2015-11-30 17:40:34 · 4201 阅读 · 0 评论 -
[BZOJ1878] [SDOI2009]HH的项链
传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1878题目大意给定一个序列,求一个区间内有多少个不同的数题解核心是离线处理 我们先定义next[i]表示i后面第一个与i颜色相同的位置 我们先考虑对于初始时处理询问区间[1..R]的情况,我们只对每个颜色第一个位置处赋值为1,其余赋值为0,那么答案就是区间和 当我们把左端点推进的时候,比如[原创 2015-11-01 19:18:16 · 782 阅读 · 0 评论 -
[BZOJ4094] [Usaco2013 Dec]Optimal Milking
传送门http://www.lydsy.com/JudgeOnline/problem.php?id=4094题目大意给定n台机器,相邻两台不能同时使用,对于机器的产量可以修改,询问m天最大产量和题解对于线段树维护一下4个权值 1.左端点选,右端点选 2.左端点不选,右端点选 3.左端点选,右端点不选 4.左端点不选,右端点不选var w:array[0..160005,1..6]of i原创 2015-12-07 13:35:47 · 373 阅读 · 0 评论 -
Codeforces 343D Water Tree
传送门http://codeforces.com/problemset/problem/343/D题目大意给定一棵树,要求支持如下操作 1.对于a的子树全部赋值为1 2.对于a到根的路径上的点都赋值为0 3.单点查询题解const maxn=500005;var w:array[0..4*maxn,1..5]of longint; x:array[0..4*maxn,1..2]of l原创 2015-12-07 19:21:40 · 471 阅读 · 0 评论 -
SPOJ GSS系列
这个系列基本包括了线段树的所有经典案例,把这个做完线段树的基䜬操作就可以了,,,,当年怎么没人告诉我QAQAQAQSPOJ1043 GSS1传送门http://www.spoj.com/problems/GSS1/题目大意给定序列,询问区间[L,R]内的最大子段和题解线段合并基本操作,每个区间记录 w[a,3]:该区间最大子段和 w[a,4]:该区间含左端点的最大子段和 w[a,5]:该区间含原创 2016-01-08 20:59:26 · 580 阅读 · 0 评论 -
[BZOJ3212] Pku3468 A Simple Problem with Integers
传送门http://www.lydsy.com/JudgeOnline/problem.php?id=3212题目大意区间修改,区间查询和题解水题const maxn=100005;type aa=record l,r:longint; val,tag:int64; end;var w:array[0..8*maxn]of aa; i,j,k:longint; n,m:longi原创 2015-11-20 20:40:53 · 370 阅读 · 0 评论 -
[BZOJ3531] [SDOI2014] 旅行
传送门题目大意题解const maxn=100050;var w:array[0..3*maxn,1..2]of longint; ls,rs,summ,maxx:array[0..20*maxn]of longint; x,y,size,fa,dep,son,top,pos,root:array[0..maxn]of longint; i,j,k:long原创 2016-02-18 11:16:26 · 419 阅读 · 0 评论 -
DP泛做
DP泛做[CF455 A] Boredom题目大意给定n个数,每次任选一个数ai,得到ai的得分,同时ai−1和ai+1都消失,无法再被选取,询问最大得分和给定n个数,每次任选一个数a_i,得到a_i的得分,同时a_i-1和a_i+1都消失,无法再被选取,询问最大得分和题解dp[i,1]:[1,i]的数都被处理完,i这个数被选的最大得分和dp[i,1]:[1,i]的数都被处理完,i这个数被选的最大得原创 2016-03-23 19:05:14 · 823 阅读 · 0 评论 -
20160331模拟
#T1题目大意题解T2题目大意f=∑ni=1wi∗xi2,限定∑ni=1xi=n,给定{wi≥0},询问f的最小值f=\sum_{i=1}^n w_i*{x_i}^2,限定\sum_{i=1}^nx_i=n,给定\{w_i\ge0\},询问f的最小值 50pt n≤4,100pt n≤2000050pt~~~n\le 4,100pt~~~n\le 20000题解这个正解就一句话,正好我还想原创 2016-03-31 22:46:05 · 381 阅读 · 0 评论 -
BestCoder Round #76
T1 DZY Loves Partition题目大意给定n,m,询问将n拆成m个互不相同的数的和且乘积最大给定n,m,询问将n拆成m个互不相同的数的和且乘积最大题解我们都知道和一定时乘积最大肯定差最小 所以我们不妨假设答案一定是两段连续的数的乘积 并且两段相邻的位置的差一定≤2\le 2(显然,我就不证了) CODET2 DZY Loves Connecting题目大意给定一棵树,求所有联通块原创 2016-03-21 09:06:30 · 376 阅读 · 0 评论 -
数据结构总结
鉴于我已经不会写树状数组[捂脸],新开一坑QAQAQ树状数组树状数组支持单点修改+区间和查询单点修改+区间最值查询区间加减+单点查询查询/修改区间最值,查询/修改区间和,单点修改 lowbit(a)=a and (-a) 定义C[i]=A[i-lowbit(i)+1]+…+A[i] 讲到树状数组必有的一张图 我们可以发现对于任意一个C[i],如果修改了的话,会影响到的是C[i+l原创 2015-08-21 12:58:58 · 869 阅读 · 0 评论 -
20160225模拟
T1const maxn=200005;var x,y,z,next:array[-2*maxn..2*maxn]of longint; seg:array[0..4*maxn,1..4]of longint; i,j,k:longint; n,m,t1,t2,ans:longint;function max(a,b:longint):longint;b原创 2016-02-26 08:47:31 · 266 阅读 · 0 评论 -
[BZOJ3339] Rmq Problem&&[BZOJ3585] mex
传送门http://www.lydsy.com/JudgeOnline/problem.php?id=3339 http://www.lydsy.com/JudgeOnline/problem.php?id=3585题目大意有一个长度为n的数组{a1,a2,…,an}。m次询问,每次询问一个区间内最小没有出现过的自然数。题解我们考虑离线处理 对于[1,R]的答案我们可以扫一遍O(N)时间处理出来原创 2015-11-26 13:20:12 · 485 阅读 · 0 评论 -
[BZOJ3747] [POI2015]Kinoman
传送门http://www.lydsy.com/JudgeOnline/problem.php?id=3747题目大意给定一个序列,对于任意区间的价值为区间内只出现过一次的权值和,询问最大权值和题解我们定义点i后与点i相同的位置为next[i]next[i] 我们考虑每个点的贡献[i,next[i]−1][i,next[i]-1],所以我们最开始将所有第一次出现的种类覆盖的贡献范围加进线段树,然后原创 2015-11-19 18:46:07 · 584 阅读 · 0 评论 -
[CodeVS1082] 线段树练习3(区间修改+询问区间和)
线段树练习 3题目描述 Description给你N个数,有两种操作: 1:给区间[a,b]的所有数增加X 2:询问区间[a,b]的数的和。输入描述 Input Description第一行一个正整数n,接下来n行n个整数, 再接下来一个正整数Q,每行表示操作的个数, 如果第一个数是1,后接3个正整数, 表示在区间[a,b]内每个数增加X,如果是2, 表示操作2询问区间[a,b]的和是多原创 2015-07-26 16:52:05 · 599 阅读 · 0 评论 -
售票系统
售票系统时间限制: 1 Sec 内存限制: 128 MB题目描述某次列车途经C个城市,城市编号依次为1到C,列车上共有S个座位,铁路局规定售出的车票只能是坐票,即车上所有的旅客都有座,售票系统是由计算机执行的,每一个售票申请包含三个参数,分别用O、D、N表示,O为起始站,D为目的地站,N为车票张数,售票系统对该售票申请作出受理或不受理的决定,只有在从O到D的区段内列车上都有N个或N个以上的空座位时原创 2015-07-27 08:42:06 · 1421 阅读 · 0 评论 -
Codeforces Round #250 D - The Child and Sequence/[TYVJ3838] DQS和序列(by 帝江&Darkfalmes)
题目大意有三种操作:求和,区间取模,单点修改n,m<=105,a[i]<=109n,m<=10^5,a[i]<=10^9官方题解http://codeforces.com/blog/entry/12513 vfk大大的题目 简单来说就是解释了一下取模操作的复杂度可以不超过nlog(n)nlog(n) 然而我不停地TTTTTTTT,好像的确比别人慢很多QAQAQ….var x:array原创 2015-08-14 17:06:49 · 629 阅读 · 0 评论 -
[BZOJ1798] [Ahoi2009]Seq 维护序列seq
[Ahoi2009]Seq 维护序列seqDescription老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成。 有长为N的数列,不妨设为a1,a2,…,aN 。有如下三种操作形式: (1)把数列中的一段数全部乘一个值; (2)把数列中的一段数全部加一个值; (3)询问数列中的一段数的和,由于答案可能很大,你只需输出这个数模P的值。Input第一行两个整数N和P(1≤P≤1000000原创 2015-08-14 15:05:52 · 582 阅读 · 0 评论 -
[CodeVS1081]线段树练习2(区间修改+单点询问)
线段树练习2题目描述 Description给你N个数,有两种操作 1:给区间[a,b]的所有数都增加X 2:询问第i个数是什么?输入描述 Input Description第一行一个正整数n,接下来n行n个整数,再接下来一个正整数Q,表示操作的个数. 接下来Q行每行若干个整数。如果第一个数是1,后接3个正整数a,b,X,表示在区间[a,b]内每个数增加X,如果是2,后面跟1个整数i, 表示询问原创 2015-07-25 14:49:24 · 773 阅读 · 0 评论 -
[BZOJ3211] 花神游历各国/[BZOJ3038] 上帝造题的七分钟2
传送门http://www.lydsy.com/JudgeOnline/problem.php?id=3038 http://www.lydsy.com/JudgeOnline/problem.php?id=3211题目大意给一个序列,支持两种操作 1.对[L,R]内的数求和 2.对[L,R]内的每一个a[i]变为sqrt(a[i])题解对于一个数一直开根号的话101210^{12}只要开7次原创 2015-08-17 21:10:03 · 561 阅读 · 0 评论 -
[BZOJ1699][Usaco2007 Jan]Balanced Lineup排队
[Usaco2007 Jan]Balanced Lineup排队时间限制: 1 Sec 内存限制: 128 MB题目描述每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序列排队. 有一天, John 决定让一些牛们玩一场飞盘比赛. 他准备找一群在对列中为置连续的牛来进行比赛. 但是为了避免水平悬殊,牛的身高不应该相差太大. John 准备了Q (1 <= Q <= 18原创 2015-08-07 09:47:53 · 854 阅读 · 0 评论 -
CodeVS第二次月赛
传送门http://codevs.cn/problem/4109/ http://codevs.cn/problem/4110/ http://codevs.cn/problem/4111/T1 TTY loves numbers题目大意题解T2 TTY Plants Sunflowers题目大意题解T3 TTY Saves Da’shgua题目大意给出一个序列,进行如下3个操作 1.对于第I原创 2015-08-20 19:30:17 · 747 阅读 · 0 评论 -
[BZOJ4034] [HAOI2015]T2
传送门http://www.lydsy.com/JudgeOnline/problem.php?id=4034题目大意对于一棵树支持 1:单点修改 2:子树修改 3:单点到根的路径查询题解ydc大爷的题解http://ydc.blog.uoj.ac/blog/336 dfs序+线段树 对于操作1,相当于对子树都加上同一个值 对于操作2,相当于对于v的子树都加上(depu−depv+1)∗原创 2015-11-13 22:16:40 · 539 阅读 · 0 评论 -
[hdu1754]I Hate It
传送门http://acm.hdu.edu.cn/showproblem.php?pid=1754题目大意单点修改+区间查询最大值题解注意有多组数据var w:array[0..800005,1..3]of longint; i,j,k:longint; n,m:longint; ch:char; a,b:longint;function max(a,b:longint):longint原创 2015-11-14 11:05:53 · 374 阅读 · 0 评论 -
[NOIP 2012] 借教室
传送门https://vijos.org/p/1782线段树var x:array[0..4000000,1..4]of longint; i,j,k:longint; n,m,a,b,c,ans:longint;function min(a,b:longint):longint;begin if a>b then exit(b) else exit(a);end;procedure原创 2015-10-15 20:06:44 · 738 阅读 · 0 评论 -
[BZOJ1593] [Usaco2008 Feb]Hotel 旅馆
传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1593题目大意两种操作 1.询问连续长度为x的最左端点,并将这段覆盖 2.将区间[L,R]区间取消覆盖题解记录区间 1.左端点连续没覆盖的长度 2.右端点连续没覆盖的长度 3.区间最长连续没覆盖的长度 修改之后回溯的时候合并注意讨论即可 详细见codeconst maxn=5000原创 2015-11-21 17:37:29 · 990 阅读 · 0 评论 -
[BZOJ1651] [Usaco2006 Feb]Stall Reservations 专用牛棚
传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1651题目大意给出奶牛运动的时间段,询问同一时间最多的奶牛数题解线段树或差分序列线段树var x:array[0..3000000,1..4]of longint; i,j,k:longint; n,a,b,m:longint;function max(a,b:longint):longi原创 2015-10-14 19:28:07 · 608 阅读 · 0 评论 -
[BZOJ2006] [NOI2010]超级钢琴
[BZOJ2006] [NOI2010]超级钢琴题目大意给定一个序列,要求找到连续的序列满足长度在[L,R][L,R]范围内,询问前kk大的满足条件的序列的和题解原创 2016-04-08 08:00:38 · 982 阅读 · 0 评论