随笔分类 -  数据结构 -- 线段树

摘要:【BZOJ4817】树点涂色(LCT,线段树,树链剖分) 题面 "BZOJ" Description Bob有一棵n个点的有根树,其中1号点是根节点。Bob在每个点上涂了颜色,并且每个点上的颜色不同。定义一条路 径的权值是:这条路径上的点(包括起点和终点)共有多少种不同的颜色。Bob可能会进行这几种 阅读全文
posted @ 2018-03-24 17:24 小蒟蒻yyb 阅读(445) 评论(0) 推荐(0)
摘要:"【CF620E】New Year Tree" 考虑一个比较暴力的$dp$ 设$f[i][j]$表示建了$i$个基站,最后一个的位置是$j$的最小代价 考虑如何转移$f[i][j]=min(f[i 1][p]+Cost(p+1,j)+C[j])$ 其中$Cost$表示代价,也就是区间内所有没有被覆盖 阅读全文
posted @ 2018-03-14 15:09 小蒟蒻yyb 阅读(926) 评论(0) 推荐(0)
摘要:线段树 by yyb Type1 维护特殊信息 "1.【洛谷1438】无聊的数列" 维护等差数列 不难发现,等差数列可以写成$ad+b$的形式 因为具有可加性 所以维护一下这个类似于斜率的东西 每次下放的时候把数列拆分成两段,$d$值公差不变 而变化的只有后面的常数项 至于如何只在一段区间内维护等差 阅读全文
posted @ 2018-03-14 15:04 小蒟蒻yyb 阅读(1578) 评论(11) 推荐(2)
摘要:【BZOJ2733】永无乡(线段树,并查集) 题面 "BZOJ" 题解 线段树合并 线段树合并是一个很有趣的姿势 前置技能:动态开点线段树 具体实现:每次合并两棵线段树的时候,假设叫做$t1,t2$,其中要把$t2$合并进$t1$中 假设当前位置$t1$没有节点,则直接把$t2$的这个位置给$t1$ 阅读全文
posted @ 2018-03-13 17:10 小蒟蒻yyb 阅读(270) 评论(0) 推荐(0)
摘要:【BZOJ4991】我也不知道题目名字是什么(线段树) 题面 "BZOJ" 题解 对于线段树维护的区间维护以下东西: 区间左(右)端开始(结束)的最长(短)子串的长度 左端右端的值,以及当前区间内的答案 每次向上合并只需要分类讨论即可 阅读全文
posted @ 2018-03-13 15:35 小蒟蒻yyb 阅读(301) 评论(0) 推荐(0)
摘要:【BZOJ4999】This Problem Is Too Simple!(线段树) 题面 "BZOJ" 题解 对于每个值,维护一棵线段树就好啦 动态开点,否则空间开不下 剩下的就是很简单的问题啦 当然了,对于数值要离散化 没必要离线吧,在线用$map$维护就行了 cpp include inclu 阅读全文
posted @ 2018-03-13 15:32 小蒟蒻yyb 阅读(342) 评论(0) 推荐(0)
摘要:【BZOJ1858】序列操作(线段树) 题面 "BZOJ" 题解 这题思路很简单,细节很烦,很码 维护区间翻转和区间赋值标记 当打到区间赋值标记时直接覆盖掉翻转标记 下放标记的时候先放赋值标记再放翻转标记 这样可以维护前4个操作 对于第5个操作 维护区间从左/右端点开始的最大连续$0/1$的个数 以 阅读全文
posted @ 2018-03-13 15:30 小蒟蒻yyb 阅读(207) 评论(0) 推荐(0)
摘要:【BZOJ1835】基站选址(线段树) 题面 "BZOJ" 题解 考虑一个比较暴力的$dp$ 设$f[i][j]$表示建了$i$个基站,最后一个的位置是$j$的最小代价 考虑如何转移$f[i][j]=min(f[i 1][p]+Cost(p+1,j)+C[j])$ 其中$Cost$表示代价,也就是区 阅读全文
posted @ 2018-03-13 15:27 小蒟蒻yyb 阅读(247) 评论(0) 推荐(0)
摘要:【BZOJ2962】序列操作(线段树) 题面 "BZOJ" 题解 设$s[i]$表示区间内选择$i$个数的乘积的和 考虑如何向上合并? $s[k]=\sum_{i=0}^klson.s[i] rson.s[k i]$ 相当于是一个卷积形式 区间取相反数是一个很好处理的操作 把所有的$s[k],k\& 阅读全文
posted @ 2018-03-13 15:25 小蒟蒻yyb 阅读(242) 评论(0) 推荐(0)
摘要:【BZOJ1558】等差数列(线段树) 题面 "BZOJ" 题解 ~~可以说这道题已经非常毒瘤了~~ 怎么考虑询问操作? 如果直接将一段数分解为等差数列? 太麻烦了。。。。 考虑相邻的数做差, 这样等差数列变为了一段连续的相等区间 考虑怎么维护分解一段区间为最少数量的等差数列 事实上,等差数列的第一 阅读全文
posted @ 2018-03-13 15:19 小蒟蒻yyb 阅读(994) 评论(5) 推荐(1)
摘要:【UOJ228】基础数据结构练习题(线段树) 题面 "UOJ" 题解 我们来看看怎么开根? 如果区间所有值都相等怎么办? 显然可以直接开根 如果$max sqrt(max)=min sqrt(min)$怎么办? 此时意味着虽然开根出来的值不同,但是减去的值相同 举个例子,比如$8,9$ 开根后是$2 阅读全文
posted @ 2018-03-13 15:17 小蒟蒻yyb 阅读(341) 评论(0) 推荐(0)
摘要:【BZOJ2957】楼房重建(线段树) 题面 "BZOJ" 题解 对于整个区间维护最大斜率以及只考虑这个区间的答案 考虑如何向上合并。 首先左半段的答案是一定存在的 所以,现在的问题就是右半段能够贡献的答案 如果右半段的最大斜率小于左半段的最大斜率,则不存在贡献 否则,如果右半段分为右左和右右两段 阅读全文
posted @ 2018-03-13 15:14 小蒟蒻yyb 阅读(389) 评论(0) 推荐(0)
摘要:【BZOJ4552】排序(线段树,二分答案) 题面 "BZOJ" 题解 好神的题啊 直接排序我们做不到 怎么维护? 考虑一下,如果我们随便假设一个答案 怎么检验它是否成立? 把这个数设成$1$,其他的数字都设成$0$ 最后检查一下这个位置是不是$1$就好啦 但是这样没法排序 那么,我们考虑二分一个答 阅读全文
posted @ 2018-02-25 11:35 小蒟蒻yyb 阅读(271) 评论(5) 推荐(0)
摘要:【POJ1151】Atlantis(线段树,扫描线) 题面 "Vjudge" 题解 学一学扫描线 其实很简单啦 这道题目要求的就是若干矩形的面积和 把扫描线平行于某个轴扫过去(我选的平行$y$轴扫) 这样只需要求出每次和$x$轴覆盖的长度 就可以两两相乘,求出面积 最后累计和就行啦 cpp incl 阅读全文
posted @ 2018-02-06 22:12 小蒟蒻yyb 阅读(417) 评论(1) 推荐(0)
摘要:【BZOJ4869】相逢是问候(线段树,欧拉定理) 题面 "BZOJ" 题解 根据欧拉定理递归计算(类似 "上帝与集合的正确用法" ) 所以我们可以用线段树维护区间最少的被更新的多少次 如果超过了$\varphi$的限制 就不用再计算了 如果需要计算就每次暴力算 这样的复杂度$O(nlog^2)$ 阅读全文
posted @ 2018-01-22 17:28 小蒟蒻yyb 阅读(379) 评论(2) 推荐(0)
摘要:【BZOJ3196】二逼平衡树(树状数组,线段树) 题面 "BZOJ题面" 题解 如果不存在区间修改操作: 搞一个权值线段树 区间第K大 直接在线段树上二分 某个数第几大 查询一下区间的size和 某个数的前缀 先查一下他是区间第几大,再求他 1大 某个数的后缀 和上面那个有区别吗??? 现在有了区 阅读全文
posted @ 2018-01-08 16:40 小蒟蒻yyb 阅读(338) 评论(2) 推荐(0)
摘要:【BZOJ1018】堵塞的交通(线段树) 题面 Description 有一天,由于某种穿越现象作用,你来到了传说中的小人国。小人国的布局非常奇特,整个国家的交通系统可 以被看成是一个2行C列的矩形网格,网格上的每个点代表一个城市,相邻的城市之间有一条道路,所以总共有2C个 城市和3C 2条道路。 阅读全文
posted @ 2018-01-01 20:31 小蒟蒻yyb 阅读(252) 评论(0) 推荐(0)
摘要:【Luogu1471】方差(线段树) 题面 "这种傻逼题。。。自己去看把。。" 题解 这题太傻比了 把方差公式拆开 维护平方和和区间和 修改就把平方和的公式拆开 简直傻逼的题目 cpp include include include include include include include i 阅读全文
posted @ 2017-12-29 09:44 小蒟蒻yyb 阅读(280) 评论(0) 推荐(0)
摘要:【BZOJ3295】动态逆序对(线段树,树状数组) 题面 Description 对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。 Input 输入第一行包含两个整数n和m,即初 阅读全文
posted @ 2017-12-27 19:55 小蒟蒻yyb 阅读(713) 评论(1) 推荐(0)
摘要:【BZOJ3531】旅行(树链剖分,线段树) 题面 Description S国有N个城市,编号从1到N。城市间用N 1条双向道路连接,满足 从一个城市出发可以到达其它所有城市。每个城市信仰不同的宗教,如飞天面条神教、隐形独角兽教、绝地教都是常见的信仰。为了方便,我们用不同的正整数代表各种宗教, S 阅读全文
posted @ 2017-12-26 17:21 小蒟蒻yyb 阅读(435) 评论(0) 推荐(0)