线段树
文章平均质量分 59
PoPoQQQ
这个作者很懒,什么都没留下…
展开
-
BZOJ 1858 SCOI2010 序列操作 线段树
题目大意:给定一个01序列,提供三种操作:0:把一段区间的所有元素都变成01:把一段区间的所有元素都变成12:把一段区间内的所有元素全都取反3:查询一段区间内1的个数4:查询一段区间内最长的一段连续的1首先如果没有操作4这就是bitset的水题。。。多了这个,我们考虑线段树线段树的每一个节点存修改标记和翻转标记,以及该区间的信息虽然查询的信息都是1 但是我们要连0一原创 2014-09-18 16:19:02 · 1812 阅读 · 0 评论 -
BZOJ 3938 Robot 线段树
题目大意:给定n个点,每个点沿数轴匀速直线运动,多次改变某个点的速度和询问当前离数轴最远的点标解见http://pan.baidu.com/share/link?shareid=4093182173&uk=2587171485#path=%252F%25E9%259B%2586%25E8%25AE%25AD%25E9%2598%259F%25E4%25BA%2592%25E6%25B5%258原创 2015-04-07 17:17:45 · 1672 阅读 · 2 评论 -
BZOJ 3995 Sdoi2015 道路修建 线段树
题目大意:给定一个2*n的网格图,多次改变某条边的权值或询问y坐标在[l,r]中的2*(r-l+1)个点的MST这真是一道好题= =我们用线段树维护每个区间内的MST然后考虑合并合并两个区间 我们会加入两条边 这样一定会形成一个环 切掉环上最大边 这题没了然后就是一坨乱七八糟的细节讨论= =首先最大边一定在图中的彩色部分内 绿色部分可以O(1)求 我们需要维护的是红原创 2015-04-16 20:04:52 · 2660 阅读 · 0 评论 -
BZOJ 4009 HNOI2015 接水果 树套树
题目大意:给定一棵树和mm条路径,每条路径有一个权值,Q次询问,每次询问某条路经包含的所有路径中权值的第k小 原来精神污染那个题是这么做的啊QwQ 题解网上都有,我就直接贴代码了 没心情写题解了#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define M 40400using n原创 2015-04-29 18:33:04 · 2604 阅读 · 0 评论 -
BZOJ 4026 dC Loves Number Theory 分块+十字链表/可持久化线段树
题目大意:给定一个序列,多次询问某段区间乘积的φ\varphi值对10007771000777的模我竟然卡过去了233333 将序列分块,记录fi,jf_{i,j}表示第ii块左端点到第jj个点中出现的所有质数pp的p−1p\frac{p-1}p之积 每次询问[x,y][x,y],首先取出[x,y][x,y]区间内所有数的积,然后乘上fst,yf_{st,y}(其中stst是xx后面第一个块端点原创 2015-04-30 16:19:58 · 2532 阅读 · 0 评论 -
BZOJ 4034 HAOI2015 T2 DFS序+线段树
题目大意:给定一棵树,每个点有点权,支持下列操作: 1.某个点的点权+a 2.某棵子树所有点权+a 3.查询某个点到根路径上的点权和 这个用入栈出栈序就可以了 入栈为正,出栈为负,那么一个点到根路径上的权值和就是入栈出栈序中[1,入栈位置]的和 而子树在入栈出栈序中是连续的,因此用线段树维护一下就可以了 (似乎只要无脑链剖就可以了?#include <cstdio>#include原创 2015-05-03 20:01:41 · 2475 阅读 · 0 评论 -
BZOJ 3307 雨天的尾巴 线段树
题目大意:给定一棵树,有mm个操作,每次给一条路径上的每个点分发一个颜色为zz的物品,所有操作结束后输出每个点上数量最多的是哪种物品 对于每个操作,我们在xx和yy上各打上一个插入zz的标记,然后在LCA(x,y)LCA(x,y)和Fa(LCA(x,y))Fa(LCA(x,y))上各打上一个删除zz的标记 然后我们对zz维护线段树 DFS一遍,对于每个节点进行如下操作: 1.将所有子节点的线原创 2015-05-12 20:20:30 · 1897 阅读 · 2 评论 -
BZOJ 3779 重组病毒 LCT+线段树维护DFS序
题目大意:给定一棵树,初始每个点都有一个颜色,支持三种操作: 1.将某个点到根的路径上所有点染上一种新的颜色 2.将某个点到根的路径上所有点染上一种新的颜色,然后把根设为这个点 3.定义一个点的代价为这个点到根路径上颜色的种类数,求某个点子树中所有点代价的平均值我真是炖了狗了…… 容易发现这玩应就是个LCT,操作1就是Access,操作2就是Move_To_Root,代价就是一个点到根路径上原创 2015-05-22 17:18:47 · 2512 阅读 · 0 评论 -
BZOJ 4103~4105 THUSC2015 题解
T1:BZOJ 4013 xor 题目大意:给定一个长度为nn的数列aa和一个长度为mm的数列bb,给定矩阵AA,令Ai,j=ai⊕bjA_{i,j}=a_i\oplus b_j,qq次询问某个子矩形里的kk大值 n≤1000,m≤3∗105,q≤500n\leq 1000,m\leq 3*10^5,q\leq 500刚看到这题的时候我发现我不会,看到数据范围的时候我发现出题人也不会…… 如果原创 2015-06-03 17:55:51 · 4065 阅读 · 2 评论 -
BZOJ 4059 Cerc2012 Non-boring sequences 线段树+扫描线
题目大意:定义一个序列为【不无聊的】当且仅当这个序列的任意一个区间都存在一个数只出现过一次,给定一个序列,要求判断这个序列是否是【不无聊的】 定义lastilast_i表示第ii个元素上一次出现的位置(第一次出现则为00),nextinext_i表示第ii个元素下一次出现的位置(最后一次出现则为n+1n+1),那么这个元素能成为某个区间仅出现一次的数,当且仅当这个区间的左端点在[lasti+1,i原创 2015-06-05 18:28:17 · 1812 阅读 · 0 评论 -
BZOJ 1513 POI2006 Tet-Tetris 3D 二维线段树
题目大意:给定一个矩阵,初始每个位置上的元素都是0,每次选择一个子矩形,将这个子矩形内的值修改为这个子矩形内的最大值+hh,求最终所有位置上的最大值我们需要维护一种数据结构,支持更新子矩形的值和查询子矩形最大值似乎二维线段树就可以了?但是YY了一下我们会发现两个没法解决的问题: 1.标记的下传 2.信息的上传其实。。。第一个很好办嘛!不下传不就好了! 标记永久化,无需下传,只要查询的时候对线段原创 2015-06-28 20:46:59 · 2475 阅读 · 0 评论 -
BZOJ 4094 Usaco2013 Dec Optimal Milking 线段树
题目大意:给定n个点排成一排,每个点有一个点权,多次改变某个点的点权并将最大点独立集计入答案,输出最终的答案 开一个线段树,每个点记录四个信息: 区间左端点不选,右端点也不选的最大值 区间左端点选择,右端点不选的最大值 区间左端点不选,右端点选择的最大值 区间左端点选择,右端点也选择的最大值 然后合并时讨论一下就行了#include <cstdio>#include <cstring>原创 2015-06-10 09:18:26 · 1683 阅读 · 0 评论 -
BZOJ 4127 Abs 树链剖分
题目大意:给定一棵树,每个点有一个整数权值(可以是负数),要求支持两种操作: 1.链上加 2.链上绝对值之和由于加的数保证非负,因此一个负数变成一个正数最多有nn次 树链剖分,在线段树中维护一下区间最大负数即可 不知道为何 写了两个线段树就TLE 把两个线段树合并成一个就7s过了#include <cstdio>#include <cstring>#include <iostream>原创 2015-06-12 11:11:52 · 2367 阅读 · 0 评论 -
BZOJ 1901 Dynamic Rankings 主席树
题目大意:可修改的区间第k小这个主席树卡了我两天。。。切掉Count On A Tree 之后我就一直认为带修改的主席树是树状数组套可持久化线段树。。。其实我被误导了。。。尼玛带修改的主席树和可持久化线段树毛关系都木有啊!!!那就是动态的权值线段树啊啊啊啊啊啊啊!!!好吧这里给不明白主席树的孩纸一些简介:1.外层树状数组2.里层线段树3.线段树动态开节点。仅此而原创 2014-10-15 11:40:57 · 1596 阅读 · 0 评论 -
BZOJ 4276 ONTAK2015 Bajtman i Okrągły Robin 费用流+线段树优化构图
题目大意:给定n个带权区间和1W个点,求最大权匹配考虑直接连边,边数为O(n2)O(n^2)级别,难以承受 线段树优化构图,边数O(nlogn)O(nlogn) 方法是建一棵线段树,父亲节点向子节点连流量为INF边权为0的边 然后一个区间向对应的loglog个节点连边即可 然而慢得没进排行榜233 标解是啥QwQ#include <cstdio>#include <cstring>#i原创 2015-09-28 15:52:23 · 2142 阅读 · 4 评论 -
BZOJ 2725 Violet 6 故乡的梦 堆优化Dijkstra+线段树
题目大意:给定一张带权无向图和起点SS、终点TT,每次询问如果某条边被删掉那么从SS到TT的最短路是多少 数据范围2∗1052*10^5 注意样例错了 第二个输出应该是66不是55首先搞出从SS到TT的任意一条最短路 然后对于一条边(x,y)(x,y),如果不在最短路径上,预处理出SS到xx的最短路以及何时离开选定的最短路径S′S',以及yy到TT的最短路以及何时进入选定的最短路径T′T' 然原创 2015-08-21 21:04:58 · 3456 阅读 · 0 评论 -
BZOJ 3218 a + b Problem 可持久化线段树+最小割
题目大意:。。。自己看从源点出发,分别向汇点连两条流量为a和b的边,跑最大流即是a+b。代码:#include #include #include #include #define M 10#define S 1#define T 2#define INF 0x3f3f3f3fusing namespace std;struct abcd{ int to,f,nex原创 2015-01-09 17:06:55 · 3748 阅读 · 5 评论 -
BZOJ 4777 Usaco2017 Open Switch Grass Kruskal+线段树
题目大意:给定一张带权无向图,每个点有一个颜色,每次改变一个点的颜色,要求你在操作后输出这个图中最近异色点对之间的距离 最近异色点对定义为:一对点颜色不同,且距离最小老年选手码什么数据结构 老老实实退役得了结论1:答案一定是一条边的两端点 证明:假如答案路径的边数≥2\geq 2,任取路径中间一点,显然它与路径的两端点中至少一个异色(因为两端点异色),故答案可以变得更小结论2:答案边一定在最小生原创 2017-03-24 03:19:39 · 2449 阅读 · 5 评论 -
BZOJ 3932 CQOI2015 任务查询系统 可持久化线段树
题目大意见http://pan.baidu.com/s/1o6zajc2主席树裸上就好了。。。#include #include #include #include #define M 100100using namespace std;struct Segtree{ Segtree *ls,*rs; int size; long long sum; void* op原创 2015-04-07 14:35:50 · 2644 阅读 · 0 评论 -
BZOJ 1135 POI2009 Lyz 线段树+Hall定理
题目大意:有1~n型号的滑冰鞋,每种有k双,一个x号脚的人只能适应[x,x+d]号滑冰鞋,每次增加一些x号脚的人或减少一些x号脚的人,问能否匹配http://m.blog.csdn.net/blog/u012732945/40707885OTZ这题我居然还能贡献一个WA真是醉了#include #include #include #include #define M 2原创 2015-04-01 09:06:43 · 1837 阅读 · 0 评论 -
BZOJ 3533 Sdoi2014 向量集 线段树+凸包+三分
题目大意:给定一个平面,维护下列操作:1.插入一个向量2.询问第l到r个插入的向量中与某个向量叉积的最大值强制在线首先答案一定在凸包上 而且如果y>0则在上凸包上 否则就在下凸包上且答案在同一凸包上呈现单峰函数 满足三分性质但是现在让我们维护某个区间内的凸包,因此我们可以使用线段树由于凸包的合并是线性的,我们不能每插入一个点都路径维护一下这个很好办嘛!反正包含未插入原创 2015-03-17 18:27:23 · 2523 阅读 · 4 评论 -
BZOJ 1012 JSOI2008 最大数maxnumber 单调栈+二分 / 线段树
题目大意:。。。自己看题目大意:。。。我还是说说吧 给定一个初始为空的序列 提供两种操作:1.查询序列后Q个数字中的最大值2.在序列尾部插入(n+t)%d,其中t是上一次查询的结果首先我们发现 如果一个数的右面有一个比他大的数,那么这个数永远不会成为最大值 他就会被弹掉说白了这题要维护一个单调递减的单调栈 对于每次查询我们二分查找L的位置即可这题线段树也能写 而且大多数人写原创 2014-09-12 20:24:29 · 1942 阅读 · 0 评论 -
BZOJ 3196 二逼平衡树 树套树
题目大意:。。。BZOJ挂了自己看去好吧既然BZOJ挂了我还是贴上来吧0.0 破服务器维护一种数据结构,提供下列操作:1.查询k在区间内的排名2.查询区间内排名为k的值3.修改某一位值上的数值4.查询k在区间内的前驱(前驱定义为小于x,且最大的数)5.查询k在区间内的后继(后继定义为大于x,且最小的数)其实一开始觉得这题是划分树主席树之类的 然后去了解了一下发现原创 2014-09-23 16:52:43 · 2326 阅读 · 0 评论 -
BZOJ 1798 AHOI2009 Seq 维护序列 线段树
题目大意:维护一个序列,提供三种操作:1.将区间中每一个点的权值乘上一个数2.将区间中每一个点的权值加上一个数3.求一段区间的和对p取模的值2631的超^n级弱化版,写2631之前可以拿这个练练手。。。线段树区间修改,让学校的大神指导了一下ZKW的区间修改方法,很好理解,但是代码还是快不了。。。回头再改改代码吧 可能是我写的太渣了#include#include#inc原创 2014-09-28 12:57:02 · 1770 阅读 · 0 评论 -
BZOJ 3333 排队计划 树状数组+线段树
题目大意:给定一个序列,每次选择一个位置,把这个位置之后所有小于等于这个数的数抽出来,排序,再插回去,求每次操作后的逆序对数首先我们每一次操作 对于这个位置前面的数 由于排序的数与前面的数位置关系不变 所以这些数的逆序对不会变化对于这个位置后面比这个数大的数 由于改变位置的数都比这些数小 所以这些数的逆序对不会变化说到底就是排序的数的逆序对数改变了 以这些数开始的逆序对没有了于是就原创 2014-10-23 10:08:42 · 2161 阅读 · 0 评论 -
BZOJ 3065 带插入区间K小值 替罪羊树套线段树
题目大意:带插入、修改的区间k小值我也作死去学了下替罪羊树(OTZ HZWER)……之前在想平衡树套不了线段树看到这题直接秒收弗拉格啊普通的平衡树由于有旋转操作 所以如果每旋转一次都重建一次平衡树妥妥TLE 但是替罪羊树就没什么问题 因为替罪羊树没有旋转如果一个节点的某个儿子的size超过了本身size的55%~80% 就暴力重建这棵子树 这个节点就被称作替罪羊节点个人对“替罪羊”原创 2014-11-15 18:20:32 · 2183 阅读 · 0 评论 -
BZOJ 3747 POI2015 Kinoman 线段树
题目大意:有m个点,每个点有个权值,现在有这m个点组成的长度为n的序列,求一个区间,这个区间内只出现一次的点的权值和最大想了半天的一道题居然被神犇说成是水题……我也是醉了枚举左端点 对于每个左端点求右端点 这个用线段树维护最大值考虑每个数对答案的贡献 记录一个数组next表示这个位置上的点下一次出现的位置 那么这个点贡献的作用范围就是[i,next[i]-1] 如果没有next就是[i原创 2014-11-18 14:54:53 · 2018 阅读 · 0 评论 -
BZOJ 3685 普通van Emde Boas树 ZKW线段树
题目大意:维护一种数据结构,支持以下操作:1 x 若x不存在,插入x2 x 若x存在,删除x3 输出当前最小值,若不存在输出-14 输出当前最大值,若不存在输出-15 x 输出x的前驱,若不存在输出-16 x 输出x的后继,若不存在输出-17 x 若x存在,输出1,否则输出-1这题卡Treap,要写线段树ZKW大法好啊 可惜我这个沙茶又原创 2014-11-03 17:20:29 · 2180 阅读 · 2 评论 -
BZOJ 2877 NOI2012 魔幻棋盘 二维线段树
题目大意:给定一个矩阵,支持两种操作:1.将某个子矩阵中的每个值增加一个数2.询问某个子矩阵中的所有数的GCD 已知所有询问恒过定点(x,y)算了BZOJ没有原题我还是把原题发上来吧- -《论代码长度与注释长度以及题目简单程度的比例失调关系以及日本饮用水资源的解决方案》《10K+代码是怎样炼成的》《GCD与修改标记的正确用法》《出题人我*你吗系列》《原创 2015-01-07 10:09:22 · 4722 阅读 · 9 评论 -
BZOJ 3489 A simple rmq problem 可持久化树套树
题目大意:给定一个序列,多次询问某一区间中出现且仅出现一次的最大的数令第i个数左侧第一个与这个数相同的数为last[i] 右侧第一个与这个相同的数为next[i]那么一个数a[i]在区间内出现一次当且仅当last[i]r&&l于是我们将元素按照last[i]排序并构建可持久化线段树 令pos为满足last[i]每次查询我要查询的是第pos个版本的线段树内所有next[i]>r的数中原创 2014-12-23 16:23:58 · 4014 阅读 · 4 评论 -
BZOJ 3813 奇数国 线段树+数论
题目大意:给定一个序列,每个数都由60个最小的素数的乘积构成,求某段的乘积的欧拉函数值对19961993取模后的值,支持单点修改19961993是个质数 出题人还是满贴心的利用线段树维护乘积取模后的值以及哪些素数出现过 后者用bitset维护得到的值根据bitset里出现过的素数来计算欧拉函数值时间复杂度O(nlog10W+60n)#include #include #in原创 2014-12-24 14:06:27 · 2598 阅读 · 0 评论 -
BZOJ 3165 Heoi2013 Segment 线段树
题目大意:给定一个平面,多次插入一条线段,以及询问某个x值能截到的最大纵坐标OTZ一份详细的网址:http://hi.baidu.com/wyl8899/item/2deafd3a376ef2d46d15e998注意细节#include #include #include #include #include #define M 100100#define EPS 1e-原创 2015-02-03 12:53:53 · 1793 阅读 · 0 评论 -
BZOJ 2527 Poi2011 Meteors 整体二分+线段树 / 可持久化线段树(MLE)
题目大意:给定一个环,每个节点有一个所属国家,k次事件,每次对[l,r]区间上的每个点点权加上一个值,求每个国家最早多少次操作之后所有点的点权和能达到一个值首先我们考虑暴力想法对于每个国家分开讨论 二分操作次数但是这样每次Judge的时候我们要模拟1~mid所有的操作 浪费在这里的复杂度实在太大这样做每个国家需要模拟O(klogk)次操作 时间复杂度O(nklogk) TLE我原创 2014-12-30 10:56:00 · 1997 阅读 · 0 评论 -
BZOJ 2962 序列操作 线段树
题目大意:给定一个序列,给定一个长度为n的序列,维护三种操作:区间加区间变为相反数求某个区间内任取c个不同的数乘积的所有方案之和对P的模比如说a b c三个数中取两个 就是ab+ac+bc这题显然是用线段树来维护下- -我们用一个0~20的数组a来记录某个区间的信息,其中a[i]表示区间内取i个数的乘积之和区间合并就是a[i]=Σb[j]*c[i-j] 这个很好理解原创 2015-02-28 17:27:19 · 2030 阅读 · 0 评论 -
BZOJ 3878 Ahoi2014 奇怪的计算器 线段树
题目大意:给定n个操作,每个操作有四种形式,操作之后若R就变成R,现在给定q个输入,求他们的输出n,q将这q个数建立线段树,四个操作都可以在线段树上完成但是溢出怎么办呢?容易发现若x因为四个操作都是线性的,溢出也不会反转两个数的大小关系那么我们可以预先将q个数排序 那么溢出的数一定是连续的两段 区间修改就行了至于怎么找两端溢出的区间…… 每个节点维护一个区间最大值和最小原创 2015-03-01 22:33:47 · 2026 阅读 · 0 评论 -
BZOJ 3319 黑白树 并查集+线段树
题目大意:给定一棵树,有两种操作:1.询问某个点到根的路径上遇到的第一个黑色边的编号2.将某条路径涂黑首先将每条边归到它下面的点上记录每个点到根路径上深度最大的黑点那么将一个点涂黑就相当于把子树中所有的点的最深黑点取个max这个用线段树就可以维护由于一个点最多只会被涂黑一次 因此时间复杂度是O(nlogn)的 现在问题就是如何在每次修改时找到路径上所原创 2015-03-06 19:39:22 · 1843 阅读 · 3 评论 -
BZOJ 3904 最长上升子序列 lkids 线段树
题目大意:给定一个序列,求以较小数开始的锯齿子序列,使相邻两项之间差值不小于k令f[i][0]表示第i个数为序列中的较大值的最长子序列f[i][1]表示第i个数为序列中的较小值的最长子序列暴力转移是O(n^2)的我们发现决策点的值都是连续的一段区间 因此用线段树维护一下就行了(真简略)#include #include #include #include #defi原创 2015-03-07 19:19:53 · 1841 阅读 · 0 评论 -
BZOJ 1018 SHOI2008 堵塞的交通traffic 线段树
题目大意:给定一张2*n的网格图,多次改变某条边是否可用,多次查询某两个点是否联通多(yi)年前的我看到这题的第一反应是:这题尼玛能做?两个点之间的路径可能是这样的:也可能是这样的:甚至可能是这样的:这题能写?这题其实好写爆了我们首先忽略第三种情况,假设所有对答案有贡献的边都在两个点的中间那么我们以每一列为一个叶节点建原创 2015-03-07 15:59:43 · 2674 阅读 · 0 评论 -
Shoi2017(六省联考)Day1题解
终于发现自己是真残了(我这句话都说了几遍了QAQ)T1:容易发现答案只与最后一科出成绩的时间有关,枚举这个时间,然后按顺序维护代价就行了。 BZ上的数据范围不对,不过影响不大,但是有一个特别坑比的点是C=1016C=10^{16},为了这个SB点卡了俩小时气都气死了#include <cstdio>#include <cstring>#include <iostream>#include <原创 2017-04-25 18:25:32 · 2980 阅读 · 5 评论