
线段树
文章平均质量分 54
g1n0st
明日安在,无人能允知乎专栏: zhuanlan.zhihu.com/g1n0st
展开
-
[BZOJ3730][震波][动态树分治+线段树+LCA]
[BZOJ3730][震波][动态树分治+线段树+LCA]题目大意:给定一棵树,要求支持两种操作: 操作 描述 (0,x,k)(0,x,k) 求所有和节点x距离不超过K的节点权值和 (1,x,y)(1,x,y) 将节点x的权值修改为y思路:树分治题,首先求出每个重心,对重心连边形成点分树。然后在每个重心上动态开两颗线段树。用在x位置增加y表示距离重心x的位置有一个权值为y的点原创 2017-02-23 16:00:42 · 1902 阅读 · 0 评论 -
[BZOJ3600][没有人的算术][替罪羊树+线段树]
[BZOJ3600][没有人的算术][替罪羊树+线段树]题目大意:定义一种数,要么是0,要么是一个二元组,这个二元组两元都是数。 定义小于是: 0<(l,r)0<(l,r)如果x<ax < a,那么(x,y)>(a,b)(x,y)>(a,b)如果x=a,y>bx = a, y>b,那么(x,y)>(a,b)(x,y)>(a,b)定义等于是:0=00=0如果x=a,y=bx = a, y=原创 2017-02-24 18:14:29 · 417 阅读 · 0 评论 -
[BZOJ2733][HNOI2012永无乡][线段树合并+并查集]
[BZOJ2733][HNOI2012永无乡]题目大意: 有一些岛屿,一开始由一些无向边连接。后来也有不断的无向边加入,每一个岛屿有个一独一无二的重要度,问任意时刻的与一个岛屿联通的所有岛中重要度第k大的岛的编号是什么。思路:线段树合并裸题。用并查集维护岛屿之间的连通性,对一个联通块内的岛屿建一棵权值线段树,合并联通块的同时合并两棵线段树。抄了 学习了一发黄学长的线段树合并的板子。代码:#i原创 2017-02-25 11:16:53 · 644 阅读 · 0 评论 -
[BZOJ4372][烁烁的游戏][动态树分治+线段树+LCA]
[BZOJ4372][烁烁的游戏][动态树分治+线段树+LCA]题目大意:给定一颗nn个节点的树,边权均为11,初始每个点权值为00 。 其中操作QQ xx询问x点的点权,操作 MM xx dd ww把xx点周围距离不超过ww的点权值加上ww。思路:应该是一棵蛮裸的动态树分治,和BZOJ3730 : http://blog.youkuaiyun.com/g1n0st/article/details/56674原创 2017-03-06 18:27:25 · 392 阅读 · 0 评论 -
[BZOJ3211&3038][上帝造题的七分钟2&花神游历各国][线段树]
[BZOJ3211&3038][上帝造题的七分钟2&花神游历各国][线段树]题目大意:给定一棵线段树,要求支持区间开根和区间查询。思路:直接上线段树暴力修改就好咯,至于为什么,因为每个节点修改的次数是有限的,一个数开根多次后肯定会变成1,然后再执行开根操作的时候就直接跳过就好了(1的根号向下取整还是1)。坑:花神游历各国可能会出现0代码:BZOJ3211:#include <bits/stdc++.原创 2017-03-07 20:04:20 · 342 阅读 · 0 评论 -
[BZOJ3307][雨天的尾巴][树链剖分+线段树]
[BZOJ3307][雨天的尾巴][树链剖分+线段树]题目大意:N<=100000N<=100000个点,形成一个树状结构。有M<=100000M<=100000次发放,每次选择两个点x,yx,y,对于xx到y的路径上(含x,yx,y)每个点发一袋ZZ类型的物品。完成所有发放后,询问每个点存放最多的是哪种物品。思路:考虑如果不是一棵树而是一段序列应该怎么做,显然我们可以开一棵权值线段树,对于一个命令原创 2017-03-12 14:23:26 · 845 阅读 · 0 评论 -
[BZOJ4499][线性函数][线段树]
[BZOJ4499][线性函数][线段树]题目大意:小C最近在学习线性函数,线性函数可以表示为:f(x) = kx + b。现在小C面前有n个线性函数fi(x)=kix+bi ,他对这n个线性函数执行m次操作,每次可以: 1.M i K B 代表把第i个线性函数改为:fi(x)=kx+b 。 2.Q l r x 返回fr(fr-1(…fl(x))) mod 10^9+7 。思路:可以发现两个原创 2017-03-29 18:41:45 · 574 阅读 · 0 评论 -
[BZOJ2243][[SDOI2011]染色][树链剖分+线段树]
[BZOJ2243][[SDOI2011]染色][树链剖分+线段树]题目大意:给定一棵有n个节点的无根树和m个操作,操作有2类: 1、将节点a到节点b路径上所有点都染成颜色c; 2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“112221”由3段组成:“11”、“222”和“1”。 请你写一个程序依次完成这m个操作。思路:树链剖分后在线段树上记录一下每个节点表示的区原创 2017-03-29 19:27:20 · 391 阅读 · 0 评论