![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
Hacheylight
ZJ OIer
展开
-
7月23日考试 爆炸记 + 题解
考试PDFA.移动杠铃原创 2018-07-24 10:58:54 · 510 阅读 · 0 评论 -
Codeforces 908G Yet Another Maxflow Problem (最小割定理,线段树)
给出一张图,点集被分为两个部分,记做 AAA 和 BBB,每个部分有 nnn 个点分别记做: A1,A2,...,AnA_1,A_2,...,A_nA1,A2,...,An 和 B1,B2,...,BnB_1,B_2,...,B_nB1,B2,...,Bn连边: (Ai→Ai+1),(Bi→Bi+1)(A_i\rightarrow A_{i+1}),(B_i\rightarrow ...原创 2019-02-28 19:23:17 · 239 阅读 · 0 评论 -
CSU 2151 集训难度(线段树)
其实是个超傻逼的题目,但是交了20几发,就死在一个写惯了的小错误上这种题目一看建两个标记就好了,tag1tag1tag1:表示区间加标记tag2tag2tag2:表示区间覆盖标记那么下传方式很显然:先下传 tag2tag2tag2,更新 tag2tag2tag2 和 vvv 和 tag1tag1tag1然后下传 tag1tag1tag1,更新 vvv 和 tag1tag1tag1...原创 2019-03-05 14:09:29 · 224 阅读 · 0 评论 -
Gym 100739A Queries (线段树)
感觉老师的做法有点大材小用这里讲一种简单一些的方法首先对于每个位建一棵线段树分开考虑可以维护异或前缀和,对前缀和建线段树可以维护区间内 000 的个数,相应的 111 的个数也就知道了那么修改就相当于修改区间 [x,n][x,n][x,n]查询的话也很套路对于每一个位,我们考虑其对答案的贡献显然贡献次数就是区间 [x−1,y][x-1,y][x−1,y] 中 000 的个数乘以 1...原创 2019-02-26 14:20:13 · 375 阅读 · 0 评论 -
HDU 5828 Rikka with Sequence (线段树)
又是一道区间开方的问题不同于“花神游历各国”的是,它要求支持单点加思考“花神游历各国”的方法是否适用如果一个区间最大值开根和最小值开根相同,那么打个下传标记否则暴力更新时间复杂度是多少?当 n=105,m=105,a={1,2,1,2,...,1,2}n=10^5,m=10^5,a=\{1,2,1,2,...,1,2\}n=105,m=105,a={1,2,1,2,...,1,2} 时...原创 2019-02-26 20:34:01 · 176 阅读 · 0 评论 -
POJ 1151 Atlantis (扫描线+线段树)
这是一道模板题,描述了一种叫扫描线的算法题意就是给出一个坐标系和 nnn 个矩形,求面积并,如下图(比较模糊,见谅):原创 2019-02-26 21:01:53 · 294 阅读 · 0 评论 -
Bzoj 3252 攻略 (dfs序,线段树)
题意:给出一棵 nnn 个节点的树,根节点为 111 号节点,每个点有一个价值 wiw_iwi要求选出 kkk 条从 111 号节点到叶子的路径,使得这些路径并的价值和最大1≤n,k≤2∗105,1≤wi≤1091 \le n,k \le 2*10^5,1 \le w_i \le 10^91≤n,k≤2∗105,1≤wi≤109首先每次贪心取显然正确那么我们处理出 dfsdfsdfs...原创 2019-02-26 21:13:45 · 382 阅读 · 0 评论 -
USACO 2019 February Gold Cow Land (树链剖分)
题目要你支持:更改树上某一点 xxx 权值为 yyy求 xxx 到 yyy 的路径权值异或和这一看就是树链剖分模板题么用线段树维护单点修改,区间查询异或然后树链剖分维护路径就搞定了#include <map>#include <set>#include <ctime>#include <queue>#include <s...原创 2019-03-06 16:36:08 · 616 阅读 · 0 评论 -
POJ 2892 Tunnel Warfare (线段树)
初始所有点都是白色题目要求支持:把一个点染黑求出点 xxx 连通的白块长度把最后一次被染黑的点染白 (栈式)仔细观察第二种操作我们实际就是找到左右两边第一个被染黑的节点假设位置分别是 aaa 和 bbb,那么区间长度 b−a−1b-a-1b−a−1但是需要特判一些东西:如果当前所有元素全白? aaa 和 bbb 不存在,但答案为 nnn如果当前元素已经为黑? a=b=xa...原创 2019-03-13 16:12:00 · 215 阅读 · 0 评论 -
IOI 2007 Sail (线段树+贪心)
题意:有一艘船,船上有 nnn 个旗杆,每个旗杆上有 hih_ihi 个小节。每根旗杆上会挂 kik_iki 张帆每个小节最多挂一个帆。在风中,帆的不同排布方式会产生不同的推动力对于任意一张帆,他的推动力折扣等于再它后面并且和它在同一高度的帆的数目所有帆的任意一种位置组合的推动力折扣和等于在该位置下所有帆的推动力折扣的和求所有位置组合最小的推动力折扣和显然有一种贪心方案:设每个位...原创 2019-02-28 16:38:07 · 445 阅读 · 0 评论 -
Codeforces 877E Danil and a Part-time Job (dfs序,线段树)
题意:给一棵 nnn 个节点的树,每个节点有一个灯,灯可亮可灭。给出 mmm 个操作,分为两种:将 xxx 及其子树的灯变成相反状态(亮变灭,灭变亮);统计 xxx 及其子树有多少个灯是亮的。题目要我们支持子树异或,子树求和这类子树问题可以很好的用 dfsdfsdfs 序解决子树对应着 dfsdfsdfs 序的一个区间区间就可以用线段树完成记录 szszsz 表示子树大小,v...原创 2019-02-23 10:53:13 · 210 阅读 · 0 评论 -
树链剖分模板 LG3384
这里是来凑个帖的,勿看。树剖详解本人题目写炸了的经历和经验#include <bits/stdc++.h>using namespace std;const int N = 100010 ;#define int long longstruct edge{ int to,next ;}e[N<<1];int head[N],f[N],de...原创 2018-08-03 20:14:47 · 141 阅读 · 0 评论 -
8月9日考试 解析
A. 黑桃城得分:100分解析:这题挺水的吧,直接把dfs之后的序列映射到线段树的一段区间维护即可反正我40分钟就A了,自认为还是挺简单的。这题好像也是比赛中AC人数最多的,。。。还有就是注意不要用不同步的cin,小心TLE然后 我好像找到了原题 CF077E Danil and a Part-time Job除输入外一模一样。。。#include&lt;i...原创 2018-08-09 18:43:05 · 254 阅读 · 0 评论 -
8月9日数据结构考试 解析
A. 黑桃城得分:100分解析:这题挺水的吧,直接把dfs之后的序列映射到线段树的一段区间维护即可反正我40分钟就A了,自认为还是挺简单的。这题好像也是比赛中AC人数最多的,。。。还有就是注意不要用不同步的cin,小心TLE然后 我好像找到了原题 CF077E Danil and a Part-time Job除输入外一模一样。。。#include&amp;amp;lt;i...原创 2018-08-09 18:43:08 · 197 阅读 · 0 评论 -
敌兵布阵 模板
这里不想说什么,只是个博客么,不想说太多与线段树的东西,简单说说。先建树,之后update,query,都是常规操作。第二次写,从原来的108行减到62行,还是很高兴的。#include <bits/stdc++.h>#define ls rt<<1 #define rs rt<<1|1using namespace std ;const i...原创 2018-08-07 15:48:58 · 229 阅读 · 0 评论 -
0x43 Can you answer on these queries III(线段树)
好久之前(好像是去年5月)做过的题,居然没做出来就弃疗了,今天才发现问题的本质其实是询问区间最大和用线段树怎么上传?子树上传到根的最大字段分成两种情况:不经过终点,是两段的最大值经过中点经过中点怎么完成?定义:datdatdat 表示区间最大字段和sumsumsum 表示区间和lmaxlmaxlmax 表示区间左端点的最大子段和rmaxrmaxrmax 表示区间右端点的最...原创 2019-02-07 20:46:59 · 190 阅读 · 0 评论 -
Codeforces 1111C Creating Snap (动态开点线段树)
wow 出题人太良心了放动态开点线段树过了理解题意,发现我们要维护的是一个长度为 2n2^n2n 的区间。于是我们想到用线段树来维护。线段树的每个节点维护区间内的人数和价值,然后按照题意 pushuppushuppushup 即可。注意如果一个区间内的人数为 000,这个区间的价值为 AAA 。由于 2n2^n2n 很大,所以我们要动态开节点。建树的时候将所有人依次插入线段树中。最后...原创 2019-02-09 15:34:07 · 399 阅读 · 2 评论 -
0x43 Interval GCD (线段树+树状数组+GCD)
数据结构好题原创 2019-02-09 16:37:33 · 196 阅读 · 0 评论 -
Gorgeous Sequence(线段树)
考虑下面一种解法:对线段树中的每一个节点除维护区间和 vvv 以外,还额外围护区间最大值 mamama,严格次大值 sesese 和最大值个数 mcmcmc现在假设我们要让区间 [l,r][l,r][l,r] 对 xxx 取 minminmin,我们先在线段树中定位区间,对定位的每一个节点,我们开始暴力搜索。搜索到每一个节点分三种情况考虑:当 ma≤xma \le xma≤x 时,显然只一...原创 2019-02-27 16:09:18 · 680 阅读 · 2 评论 -
线段覆盖 (线段树)
有一根长度为 LLL 的白色条状物。有两种操作:用一条长度为 TTT 的黑布盖住条状物的 [a,a+T][a,a+T][a,a+T] 的这个区间把某条黑布拿走输入 LLL 和 nnn 次操作,要你输出每次操作之后条状物上有多少个黑区间条状物上黑区间的总长度观察出题目的询问每次都是一样的,其实也只有一种修改(添和删相当于互逆操作)我们可以建一棵线段树vvv 表示有多少个黑区间...原创 2019-03-13 18:54:17 · 1262 阅读 · 0 评论