线段树
w_uxidixi
nnzncf
展开
-
CodeForces - 1418D. Trash Problem 线段树+离散化/set维护
CodeForces - 1418D. Trash Problem 线段树+离散化/set维护不难想到,最后的ans=max{a[i]}−min{a[i]}−max{a[i]−a[i−1]}ans=max\{a[i]\}-min\{a[i]\}-max\{a[i]-a[i-1]\}ans=max{a[i]}−min{a[i]}−max{a[i]−a[i−1]}一、线段树做法维护区间的最大值,最小值,和区间最大的相邻差值需要用到离线,将所有的点都放入数组才能离散化,然后构造线段树的过程中,记录下哪些点原创 2020-09-24 11:41:22 · 228 阅读 · 0 评论 -
树状数组应用总结
前言做个总结,忘记之后再翻翻首先明确一下树状数组的结构性质:1.每个内部节点c[x]c[x]c[x]保存以它为根的子树中所有叶节点的和2.每个内部节点c[x]c[x]c[x]的子节点个数等于lowbit(x)lowbit(x)lowbit(x)的位数,即位为1的数量例如:x=9=23+21x=9=2^3+2^1x=9=23+21,分为[1,8],[9,9][1,8],[9,9][1,8],[9,9]两个区间,区间和分别为c[8],c[9]c[8],c[9]c[8],c[9]x=13=23+22原创 2020-07-03 23:31:56 · 216 阅读 · 0 评论 -
CodeForces - 1354D Multiset 权值线段树/树状数组+二分
CodeForces - 1354D Multiset 权值线段树/树状数组+二分权值线段树可以过,普通的单点修改查询线段树TLE做法一:线段树const int maxn=1e6+7;const int INF=1e9;const ll INFF=1e18;int a[maxn],tree[maxn<<2],n,q,x,k;void pu(int rt){tree[rt]=tree[rt<<1]+tree[rt<<1|1];}void build(int原创 2020-05-20 22:09:52 · 210 阅读 · 0 评论 -
P1972 HH的项链 离线+树状数组
P1972 HH的项链 离线+树状数组这题好像用线段树做有点……超出我的智商了如果数字范围小于60的话还可以用状压但是吧1e6有点过分了0.0今天刚学树状数组,随便写了个线段树经典修改题,就来补这道题了嘤嘤嘤菜鸡互啄题意给出m个询问L,R ,问[L,R]内共有多少个不同的数字思路假设给出一个数列1445,如何用离线处理呢?求区间[1,4],现在先假设每个数字的值都是1,那么这样前...原创 2019-09-01 15:27:00 · 120 阅读 · 0 评论 -
线段树基础之加乘混合区间修改p2023
维护序列题意给出N个数有三个操作1.L,R间的数都+x2.L,R间的数都×x3.查询L,R的加和错误做法一开始理所当然的分开来写了两个push_down,两个update后来样例都过不去错误原因一共存在两个lazy标记,子节点的lazy2标记显然是得乘上下放的lazy2标记(最开始都是1),但是子节点的lazy1此时就直接加上下放的lazy1标记吗,因为标记了lazy1表示这...原创 2019-08-27 22:00:41 · 125 阅读 · 0 评论 -
线段树基础之区间合并HDU1540
HDU1540 Tunnel Warfare参考博客:https://blog.csdn.net/MIKASA3/article/details/70197099原创 2019-08-17 13:50:11 · 123 阅读 · 1 评论 -
线段树基础之区间染色ZOJ1610
Count the colors参考博客:https://blog.csdn.net/nb_weige/article/details/98779241区间染色,由于下一个颜色会覆盖原有的颜色,其实就是线段树的区间更新问题,但是这个更新问题更加复杂一点,还让你求出每一个颜色一共出现了几段,那就得多加一个col记录上一个的颜色,多一个ans数组记录颜色出现次数细节:这里的数字代表的不是区间标...原创 2019-08-16 15:39:07 · 303 阅读 · 0 评论 -
线段树基础之单点修改查询&区间修改查询&懒惰标记的解释
前言1.增加或减少x和更新为x是两个不同的概念!接下来的修改指的都是对一个数或者一个区间内的数增加或者减少,如果是把一个数更新或者把一个区间内的数更新的话就不适用了2.如果只是单纯的修改查询更新操作,其实区间修改具备了单点修改的功能单点修改查询(板子例题:HDOJ1166 敌兵布阵/** * Author1: low-equipped w_udixixi * Author2:...原创 2019-08-15 21:45:57 · 313 阅读 · 0 评论 -
线段树基础之区间合并HDU3308
LCIS题意给出两种操作1.单点修改2.求出区间最大严格递增长度做法线段树维护区间递增长度tree的构造很重要我一开始用了一个maxx记录递增长度,lval记录左端点值,rval记录右端点值但是发现这样好像并不能做到push_up,因为情况分不清楚后来看了题解后真的很巧妙,但是自己第一次接触实在是想不出来0.0AC代码/** * Author1: low-equipp...原创 2019-08-24 14:41:56 · 104 阅读 · 0 评论 -
线段树基础之区间合并POJ3667
Hotel做法记录下每个一个区间内左连续子段长度和右连续子段长度和最长连续子段一开始忘记写了个if (lazy[rt]!=-1)。。。后来又检查出一个mid错误太睿智了0.0记下来,区间合并实在是不太熟练,但是总体思想基本上都差不多/** * Author1: low-equipped w_udixixi * Author2: Sher丶lock * Date :2019...原创 2019-08-23 23:21:57 · 118 阅读 · 0 评论 -
线段树基础之状态压缩POJ2777
题目大意给出N个格子和T种颜色操作1对区间[L,R]进行涂色操作2询问[L,R]中不同颜色的数量做法由于颜色最多只有三十种,2^30可以在int整型范围内表示,所以可以把每一种颜色定义为一个”位“,如果这个位是1表示这个颜色在这个区间内涂过,0则没有若要表示9(1001) 和 12(1100)的push_up合成则可以取位运算或”|“得到13(1101)这样既容易理解也很容易实现...原创 2019-08-19 21:02:16 · 109 阅读 · 0 评论 -
RMQ算法例题(线段树写法)及线段树初学理解
RMQ算法例题(线段树写法)及线段树初学理解上次学的ST算法解决线段树写法,然后发现线段树其实也可以解决这个问题,不知道为什么我对树有一点阴影,一开始我一直不敢学呜呜呜,还是得慢慢一点点前进!例题: balanced upline有n头母牛 接下来一行有n个数表示每头母牛的高度,他们的位置是1-n。给出T组查询区间,找出区间中(含端点)最小的母牛高度。如果仅仅是这样,用ST写法可以很快的...原创 2019-05-26 10:56:58 · 206 阅读 · 0 评论