![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构 线段树
_pkm_
love coding
展开
-
HIHO #1080 : 更为复杂的买卖房屋姿势(线段树双标记)
题目链接两种操作, 0)区间加减,记add标记 1)区间设置为某一个值,记set标记使用2个懒惰标记,然后注意的是,2个操作的优先级,也就是下放节点的标记的时候,注意先检查set标记,因为set是会覆盖掉区间的加减操作的。#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#defi原创 2016-08-10 21:18:15 · 426 阅读 · 0 评论 -
poj 3237 Tree(树链剖分,点权,线段树)
题目链接 题意:一棵树3个操作 1.chang i,v 把第i条边权值修改为v 2.negative a,b 把a到b权值取反 3.query a,b 查询a到b的边上的最大值 树链剖分就不说了,线段树,由于取反操作,所以我们同时记录下最小值,这样取反操作,就是最大的变最小了,最小的变最大了,附加一个懒惰标记。偶次反转是没变的。//#pragma comment(linker, "/STA原创 2016-10-29 12:21:28 · 296 阅读 · 0 评论 -
BZOJ 4034: [HAOI2015]T2(树链剖分,点权,线段树)
题目链接 题意: 有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。 操作 3 :询问某个节点 x 到根的路径中所有点的点权和。直接跑树链剖分,我们知道剖分的第二个dfs,我的代码是getpos 中,某一个节点的子树节点编号是连续的,所原创 2016-10-29 10:49:29 · 333 阅读 · 0 评论 -
BZOJ 2243: [SDOI2011]染色 (树链剖分,点权,线段树)
题目链接树链剖分,然后直接跑一遍,线段树//#pragma comment(linker, "/STACK:102400000,102400000")#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define fastIO ios::sync_with_stdio(false)原创 2016-10-28 16:56:39 · 249 阅读 · 0 评论 -
HDU 3974 Assign the task (线段树+dfs序)
J - Assign the taskTime Limit:5000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit Status Practice HDU 3974DescriptionThere is a company that has N employees(numbered from 1 to N),e原创 2015-04-09 21:41:32 · 606 阅读 · 0 评论 -
poj 2763 Housewife Wind(树链剖分,边权)
题目链接 题意:给出一颗树,初始在s点,有2个操作0操作,表示求s到u路径和 1操作表示把第i条边权重变为w。树链剖分,然后用线段树维护就可以了//#include<bits/stdc++.h>#include<iostream>#include<cstdio>#include<algorithm>#include<vector>#include<queue>#include<sta原创 2016-10-27 22:29:40 · 265 阅读 · 0 评论 -
ZOJ 1610 Count the Colors (线段树+结点为长度为一的区间+树的遍历)
F - Count the ColorsTime Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %lluSubmit Status Practice ZOJ 1610DescriptionPainting some colored segments on a line, some previously pain原创 2015-04-06 18:10:28 · 669 阅读 · 0 评论 -
线段树小记
关于线段树的叶子节点,连续与离散的2种情况A)连续的,比如[3,7]:就表示数轴上3到7这么一段。B)离散的,比如[3,7]:就是表示集合{3,4,5,6,7}二者在线段树上的区别是 1. A在线段树中的叶子节点是[l,l],区间分开是[l,m],[m+1,r] 2. B在线段树中的叶子节点是[l,l+1],区间分开是[l,m],[m,r]等原创 2016-10-26 23:22:05 · 183 阅读 · 0 评论 -
CDOJ1259 昊昊爱运动 II (线段树+bitset)
题目链接 使用bitset保存每一段区间的不同的数的数量,线段树节点,存bitset,bitset可以使用二进制位运算#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<vector>#include<iostream>#include<bitset>using namespace原创 2016-04-15 11:28:09 · 507 阅读 · 0 评论 -
CF 343D D. Water Tree(树链剖分,简单题)
题目链接 题意:给出一个树;三种操作 1 v 表示把v及其子树全部变为1 2 v 表示把v及其祖先全部变为0 3 v 查询v的值 数组尽管开吧,,, 然后,祖先就是1到该点,不要想太多- - 子树的编号在剖分的编号中是连续的,[p[x],p[x]+size[x]-1]#pragma comment(linker, "/STACK:102400000,102400000")//#inc原创 2016-10-29 14:55:55 · 609 阅读 · 0 评论