
线段树
文章平均质量分 55
wwyx2001
OIer----这条路,仅一人独行
展开
-
2018SD省队集训R2 D7
T1 题解代码原创 2018-07-08 12:04:22 · 437 阅读 · 0 评论 -
[CF1000F] One Occurrence(线段树)
题目:我是超链接题解:代码:#include <vector>#include <cstdio>#include <cstring>#include <iostream>using namespace std;#define INF 1e9const int N=500005;int ans[N],a原创 2018-06-28 22:00:42 · 1067 阅读 · 0 评论 -
[BZOJ3672][NOI2014]购票(斜率优化DP+树链剖分+线段树+三分)
题目:我是超链接题解:这个很明显要从上往下DP,而且下面的DP选择了就可以直接选择用上面的信息直接转移了。大概就是f[i]=min(p[i]∗(dis[i]−dis[j])+q[i]+f[j])f[i]=min(p[i]∗(dis[i]−dis[j])+q[i]+f[j])f[i]=min(p[i]*(dis[i]-dis[j])+q[i]+f[j])(dis[i]-dis[j]&...原创 2018-06-21 20:52:49 · 265 阅读 · 0 评论 -
2018SD省队集训R1 D7
T1题解:代码:T2题解:很明显我们可以转化一下看看,贪心的从最小的开始选择,每一个数字可以连向左边还没被扩进去的最大值,右边的第一个,或者是自己,维护区间最大值可以用线段树,维护哪些区间被用过可以用set。 则234被扎死口,234的值都是0;56未被扎死口,6的值是0。可以发现,被扎死口的元素值为0,值为0的元素不一定被扎死口,因为还可以向左连5,这里扎死口的...原创 2018-06-19 21:36:27 · 607 阅读 · 0 评论 -
[CF834D]The Bakery(线段树优化dp)
题目:我是超链接题意:给出n个数字,将这些数字隔成k个部分(相对位置不变),统计每个部分有几个不同数字,然后全部加起来求和,问和最大是多少。题解:很容易看出DP方程:f[i][j]=maxf[k][j−1]+diff(k+1,i)f[i][j]=maxf[k][j−1]+diff(k+1,i)f[i][j]=max{f[k][j-1]+diff(k+1,i)},d∈[j−1,i...原创 2018-05-23 09:16:54 · 1091 阅读 · 0 评论 -
[BZOJ4515][SDOI2016]游戏(线段树+链剖+差分)
题目:我是超链接题解:我们先随意分析一下题目,这个处理路径上的最小值应该是树链剖分。 还有这个距离,一开始想的是lca,但我发现这个s作为一条路径的开始不能白费,而且对于每个节点和s求lca显然太慢了,我们考虑差分,即: 上升的路径:A(dis[s]−dis[r])+B=−Adis[r]+Adis[s]+BA(dis[s]−dis[r])+B=−Adis[r]+Adis[s]+...原创 2018-04-23 23:27:12 · 297 阅读 · 0 评论 -
[BZOJ3938]Robot(线段树)
题目:我是超链接题解:可以发现机器人走的都是一次函数,变了速度也是折线。 那么我们把时间离散化,建立时间上的线段树,然后就是普通的线段最高点覆盖问题 注意这里是绝对值,所以我们要维护最高值和最低值 随便说下思路没有代码...原创 2018-04-23 18:51:55 · 263 阅读 · 0 评论 -
[BZOJ3165][HEOI2013]Segment(不下放标记的线段树)
题目:我是超链接题解:这个线段遮挡的和那个BZOJ1568一样啊,除了给了一个范围,这样需要自己算delta 注意他给的有可能是x0=x1但是y0!=y1,这个时候给y0,y1取max。。。代码:#include <cstdio>#include <iostream>using namespace std;const int sb=1e9;...原创 2018-04-23 16:38:37 · 228 阅读 · 0 评论 -
[ZOJ3886]Nico Number(线段树)
题目:我是超链接题意:niconico数:所有比x小的数且与x互质的数,从小到大排列是一个等差数列,则x为niconico数。 长度为10^5的数组。三种操作:第一:询问区间[l,r] niconico数的个数第二:将区间 [ l , r ] 的数对v取模第三:将某一个数更新为x题解:首先我们打个表看看这个数,然后我们可以发现,一个数是niconico数有以下3种...原创 2018-04-23 10:41:32 · 196 阅读 · 0 评论 -
[CF438D]The Child and Sequence(线段树区间取模+区间和+单点更新)
题目:我是超链接题解:懒标记:对区间打下的标记,在用到的时候会pushdown 作用的条件:标记可以合并可以快速更新区间信息(下传方便)这个题目用到的区间修改,但不满足条件二,也就是无法快速更新区间和,而逐个更新对每个数取模太慢了有一个很重要的结论:任何一个数log次取模以内就能变为0,并且a%b=a(a < b)单点更新和区间和并无特殊之处,而对于每个区...原创 2018-04-23 08:48:20 · 682 阅读 · 0 评论 -
[BZOJ1568][JSOI2008]Blue Mary开公司(不下放标记的线段树)
题目:我是超链接题解:这绝对是我见过最敷衍的输出样例 可以发现这都是递增的一次函数 那么每次修改的时候我们都分三种情况:两端都大于(修改走人),两端都小于(走人),递归解决问题代码:#include <cstdio>#include <iostream>using namespace std;const int N=50005;struc...原创 2018-04-22 21:18:58 · 322 阅读 · 0 评论 -
【loli的胡策】测试4.16(线段树+概率期望dp)
T1题解仔细分析了题目发现并不是后缀家族的(松口气然后随便想了一个简单的思路,每次查询的时候遇到’)’就用链表遍历’(‘,然后遍历之间的’w’,至于’0’我们用一个树状数组查看w左边的‘0’个数和右边的‘0’个数乘积就是ans,然而这样的时间复杂度是很不稳妥的O(n2logn)O(n2logn)O(n^2logn),60pts然而这种区间修改单点修改我应该想到的———线段树...原创 2018-04-16 21:02:30 · 347 阅读 · 0 评论 -
[BZOJ2752][HAOI2012]高速公路(线段树)
题目:我是超链接题解:这个题目期望的点就是把每一段的距离加起来然后/[(r-l+1)*(r-l)/2] 那么这道题目就剩下求每个子区间的和 的和 这个1e5的范围还有修改操作我们选择线段树 很明显权值是在边上的,这里我们已经考虑r–了,那么我们要求的值=Σcost[i]* (i-l+1)*(r-i+1) 其实并不难理解,就是包含这个数的左子集*包含这个数的右子集 然后拆开=(...原创 2018-04-13 19:50:04 · 228 阅读 · 0 评论 -
[BZOJ2212][POI2011]ROT-Tree Rotations(线段树合并)
题目:我是超链接题解:统计一棵树的逆序对数就是左子树逆序对数+右子树逆序对数+左右子树之间的逆序对数 这个左右子树之间的话,如果我们用权值线段树,那么可以通过讨论交不交换,用左子树个数*右子树之类的,然后直接求min值 注意要区分原树中的左右节点和线段树中的左右节点代码:#include <cstdio>#include <iostream>...原创 2018-04-11 16:31:48 · 243 阅读 · 0 评论 -
[BZOJ3545][ONTAK2010]Peaks(线段树合并||splay启发式合并)
题目:我是超链接题解:首先是splay启发式合并,我们离线后将询问排序,对于每一个询问,我们把比ta小的边权加入然后给连通块维护splay,每次启发式合并查询排名 我们可以用更加优秀的线段树合并,不要忘了线段树也可以用来查询区间第k大,首先这个范围是1e9我们要离散化,然后和splay的启发式合并是一样的,只是我们每次合并线段树。时间复杂度O(nlogn)O(nlogn)O(nlog...原创 2018-04-10 11:24:25 · 379 阅读 · 0 评论 -
[BZOJ5249][多省联考2018]IIIDX(线段树)
题目:我是超链接题解:首先很显然我们有一个贪心的思路:后序遍历从大到小填数,trick一下可以得到60pts 但是对于下面这组数据显然是没有用的 4 2 1 1 1 2 我们贪心的答案是1 1 1 2,但更优的方案是1 1 2 1 那么考虑一下怎么消除这种有重复数字的情况,我们发现只有排名一样的情况下需要考虑前后 我们可以按位贪心,即在给后面预留出足够位置的情况下先填好...原创 2018-04-09 17:38:02 · 296 阅读 · 0 评论 -
[BZOJ4821][SDOI2017]相关分析(线段树)
题目:我是超链接题解:这个给的a的柿子很明显不好弄啊,我们画一画a=∑Ri=L(x−x¯)(y−y¯)∑Ri=L(x−x¯)2a=∑i=LR(x−x¯)(y−y¯)∑i=LR(x−x¯)2a=\frac{\sum_{i=L}^R(x-\bar{x})(y-\bar{y})}{\sum_{i=L}^R(x-\bar{x})^2} (以后∑∑\sum表示∑Ri=L∑i=LR\sum_...原创 2018-03-31 16:03:19 · 180 阅读 · 0 评论 -
[BZOJ2674]Attack(整体二分+树状数组套线段树)
题目:我是超链接题解:Emmm。整体二分+树套树。 我们先把坐标离散,权值嘛,离不离散的无所谓,因为log1e9也是个常数 这里的交换操作相当于两个修改操作,每个修改操作也要拆成两个:把以前的减去,把新来的加上 那么现在的操作就是修改,询问就是查询第k小 我们依然按照权值二分,每次把小于等于mid值得操作执行,可以完成任务的询问(小于的数字比k多)放在左边 那么为什么不能...原创 2018-03-26 22:01:16 · 247 阅读 · 0 评论 -
[BZOJ4817][SDOI2017]树点涂色(LCT+线段树+差分)
题目:我是超链接题解:这道题的关键是每一次都是将某一个点到根的路径的点染一种没用过的新颜色 这个操作实际上和lct中的access操作很像,因为都是打通一条到根的路径 那么我们就可以将重边的贡献记为0,轻边的贡献记为1,一棵splay维护一种颜色,每一个点的权记为根到当前点的边的贡献和,那么2操作实际上就是计算val(x)+val(y)-2*val(lca(x,y))+1,3操...原创 2018-03-18 16:36:40 · 431 阅读 · 0 评论 -
[BZOJ1058][ZJOI2007]报表统计(线段树+平衡树)
题目:我是超链接题解:被平衡树的思路局限了,本来想写两棵平衡树,其实只需要一棵线段树+一棵平衡树就好了 对于MIN_GAP操作我们用线段树,叶子节点维护左端值,插入的时候修改右端点的值,然后维护区间最小值就好了 对于MIN_SORT_GAP操作我们用平衡树维护大小关系 1A真是满意代码:#include <algorithm>#include &...原创 2018-03-16 09:36:22 · 371 阅读 · 0 评论 -
[BZOJ3226][SDOI2008]校门外的区间(线段树)
fBAgGjwvfrKU题目:我是超链接题解:如何处理开闭区间?开两倍的节点,一部分代表端点,一部分代表区间 然而一开始愚蠢的up选择1-base为区间,base+1-Max为端点,然后就开始无穷无尽的调试,最后还没法输出 没办法了,那就让端点和区间挨着吧,一个端点一个区间。。。 这些操作也很明了了 And 两侧变成0 Or 区间全1 已有-新读 区间全0 新读-已有...原创 2018-03-07 21:02:01 · 281 阅读 · 0 评论 -
[codevs3044]矩形面积求并(线段树+扫描线)
题目:我是超链接题解:这个实数有点点麻烦,STL大法好,照离散不误 注意线段树表示全覆盖的范围,那么如果有线段[l,r],我们要去覆盖[l,r-1],覆盖的长度自然就是(r+1)-l代码:#include <map>#include <cstdio>#include <cstring>#include <algorith...原创 2018-03-07 10:40:55 · 307 阅读 · 0 评论 -
[luogu1856][USACO5.5]矩形周长Picture(线段树+扫描线)
题目:我是超链接题解:其实这道题目暴力就可以过 每个矩形按照国际惯例看成四条线,横竖各做一次扫描比较好理解。每条边被计算时,对线段树产生的影响(添加这个数前的覆盖情况-添加后的覆盖情况 的绝对值)就是相对应的周长贡献。 问题是首尾相接的矩形怎么破?以纵线为例,在排序的时候强行让x坐标一样的添加在前,删除在后就可以解决这个问题了。代码:#include <cstdi...原创 2018-03-07 09:46:00 · 355 阅读 · 0 评论 -
[POJ2482]Stars in Your Window(线段树)
题目:我是超链接题意:假定天空是一个平面,每个星星都有一个坐标(x,y),每颗星星都有一个亮度C,代表它的亮度。窗户是长方形的,有固定的长和宽,边平行于x轴和y轴。你的任务是告诉我如何摆放窗户,才能获得在窗口内所有星星的亮度总和最大值。注意,边框的星星不算。窗口可以被平移,但不允许旋转。 输入 在输入中有几个测试样例例。每一行的第一行包含3个整数:n,w,h,表示星形的数目,矩...原创 2018-03-06 23:35:17 · 330 阅读 · 0 评论 -
[BZOJ1513][POI2006]Tet-Tetris 3D(二维线段树-----线段树套线段树)
题目:我是超链接题解:二维线段树的姿势很明显了,每次更新一个二维矩形内的最高值,更新也用最高值更新 这道题就是区间查询+区间修改了 区间修改和单点修改有什么区别呢?区间修改需要二维线段树的标记永久化 标记永久化对于线段树上每个节点需要维护两个量,拿维护最大值来举例,你需要维护一个值have,代表这个子树里有这样一个最大值,另外一个值all代表这个子树里全都是这个值 那么赋值...原创 2018-03-06 19:42:47 · 335 阅读 · 0 评论 -
[UVA11297]Census(二维线段树-----线段树套线段树)
题目:我是超链接题解:你的任务是维护一个n行n列的数字矩阵,要求支持两种操作q x1 y1 x2 y2:查询以(x1,y1)为左下,(x2,y2)为右上的矩形内最大值和最小值c x y v:把格子(x,y)的值修改为v题解:二维线段树有两种实现方法:树套树和四叉树 然而据说四叉树很坑,还是选择树套树吧,这道题算是。。。裸题?具体来说,先对x坐标建一棵线段树,每个...原创 2018-03-06 11:17:55 · 398 阅读 · 0 评论 -
维护区间gcd(线段树 || ST表+二分)
今天最后一更啦,晚安各位!原创 2017-10-25 21:54:57 · 1259 阅读 · 0 评论 -
[bzoj3339]mex(线段树)
白日落,渐晚些,半盏屠苏,诙谐曼倩取自容原创 2017-10-25 20:26:03 · 533 阅读 · 2 评论 -
[BZOJ3956]Count(单调栈+线段树)
与圆脸&xp的纸飞机大战原创 2017-10-01 19:10:43 · 441 阅读 · 0 评论 -
【tyvj1473】校门外的树3
如果你问我吃饭重要还是英语课重要。。。。那我的答案肯定是------吃饭!原创 2017-09-13 14:04:02 · 316 阅读 · 0 评论 -
[luogu1558][POJ2777]Count Color(线段树+二进制操作)
这道题很有意思原创 2017-09-12 19:48:51 · 293 阅读 · 0 评论 -
【学姐的胡策】训练8.17(Lucas+线段树并查集)
学姐好可爱呢原创 2017-08-17 20:47:53 · 424 阅读 · 0 评论 -
【loli的胡策】NOIP训练7.15(签到+dp+线段树)
于是信息组从没有空调吹风扇变成有了空调吹风扇原创 2017-07-15 14:19:54 · 852 阅读 · 0 评论 -
Turing Tree(线段树区间不同数字)
《雷雨》好多槽点啊原创 2017-06-18 16:51:05 · 884 阅读 · 0 评论 -
【SDOI省队集训题】pair(线段树+二分)
明天最后一天。原创 2017-06-03 18:47:59 · 371 阅读 · 0 评论 -
【codevs1279】Guard 的无聊
题目:我是超链接题解:就是一个质因数分解(要记忆化)+普通线段树代码:#include #include #include #define N 2000000using namespace std;int zh[1229]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97原创 2017-03-03 20:28:51 · 898 阅读 · 0 评论 -
[tyvj1473]校门外的树3
好吧这只是个噱头,这道题由于zz的tyvj一直不给我发邮件,所以只是精神AC……. 然后。。。在half an hour之后,我依然没收到他的邮件。。。refuse描述校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的…… 如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作: K=1,读入l,r表示在l~r之间种上的一种树 K=原创 2017-03-02 17:09:51 · 490 阅读 · 0 评论 -
[codevs1191]数轴染色
题目:我是超链接题解:flag[i]表示是否被完全染色代码:#include #include #include #define N 5000000using namespace std;bool flag[N*4+5],delta[N*4+5];void updata(int now)//flag[i]==true 全是白的{ flag[now]=flag原创 2017-03-02 16:43:20 · 428 阅读 · 0 评论 -
线段树模板
第x个数加v求x到y这个区间的和–现在我们已经掌握了构造,点修改,点查询,区间修改,区间查询五个最基本的操作–线段树的两个最重要的过程:pushdown和update–线段树的一个隐藏的重要过程——change和pushdown时都要进行的修改–所有的修改函数,最后都要update–所有的函数,开始都要pushdown代码:(带有乘法哟)#include原创 2017-02-10 10:26:15 · 267 阅读 · 0 评论