线段树
文章平均质量分 78
The___Flash
这个作者很懒,什么都没留下…
展开
-
Tree(计蒜客-39272,重链剖分 + 双重懒惰线段树)
一、题目链接Tree二、题目大意给一个 nnn 个点且以 111 号点为根的树,第 iii 个点的点权为 a[i]a[i]a[i],mmm 次操作,操作有 333 种:1.1.1. 给出 sss 和 ttt,要求把从 111 到 sss 路径上的点的点权 ∣=t|= t∣=t.2.2.2. 给出 sss 和 ttt,要求把从 111 到 sss 路径上的点的点权 &=t\&= t&=t.3.3.3. 给出 sss 和 ttt,要求把从 111 到 sss 路径上的点与另外原创 2021-05-26 12:12:18 · 180 阅读 · 0 评论 -
Neko and sequence(HDU - 6539,树状数组维护奇怪の东西♂)
一、题目链接:Neko and sequence二、题目大意给一个长度为 nnn 且字符集为 {′(′,′)′}\{'(', ')'\}{′(′,′)′} 的字符串 sss,下标从 000 开始标号. 还给出一个整数 qqq 和一个整数 kkk.定义走一步:对于每一个 i (0≤i≤n−1)i \; (0 \leq i \leq n - 1)i(0≤i≤n−1),若 s[i]==′(′s[i] == '('s[i]==′(′,则走一步到达 (i−k+n)%n(i - k + n) \% n(i−k原创 2021-05-02 17:21:38 · 299 阅读 · 0 评论 -
Cupcake Bonuses(UCF Local Programming Contest 2018 E,dfs序 + 线段树)
一.题目链接:Cupcake Bonuses二.题目大意:初始有一个员工,有四种操作:1 i:给第 i 员工一个员工.2 i m:把第 i 号员工的工资系数置为 m.3 i b:给第 i 号员工及其所有下属基金为 b 的工资,每个人的实际所获工资等于 基金b * 这个人的工资系数.4 i:查询第 i 号员工当前已获得的实际工资.三.分析:这题直接暴力即可.(比赛...原创 2020-03-26 12:51:03 · 658 阅读 · 0 评论 -
Find the answer (HDU - 6609,权值线段树)
一.题目链接:HDU-6609二.题目大意:有 n 个数,到第 i 个数时,如果 sum > m,要求在 [1, i - 1] 中删除一些数,使得 sum ≤ m.求最少删除数的个数.三.分析:首先,删除的话肯定是要从最大数开始删.即:将数组顺序排列,从大往小删除.离散化后的权值线段树则可以实现这一点.即:查询从数组 [1, i - 1]中,在满足 sum...原创 2019-07-31 15:11:12 · 128 阅读 · 0 评论 -
MAZE(2019牛客暑期多校训练营(第二场)E,线段树 + 矩阵乘法)
一.题目链接:MAZE二.题目大意:给一个 n × m 大小由{0,1}构成的矩形,Q 次询问.0 可以走,1 不可以走.每次走只能向下,左,右方向,且不能走重复的位置.每次询问有三个整数:q,a,b.当 q 为 1 时,将点(a,b)取反.当 q 为 2 时,求出从点(1,a)走到点(n,b)的方案数 % (1e9 +7).三.分析:先考虑一个点的方案数...原创 2019-07-23 11:15:33 · 194 阅读 · 0 评论 -
Snowy Smile (HDU - 6638,稀疏矩阵子矩阵最大和)
一.题目链接:HDU-6638二.题目大意:求稀疏矩阵子矩阵最大和.三.分析:离散 x 坐标,枚举 x.线段树维护区间最大子段和将的算法优化到了详见代码.四.代码实现:#include <set>#include <map>#include <ctime>#include <queue>#inc...原创 2019-08-14 14:32:08 · 251 阅读 · 0 评论 -
All men are brothers(2019牛客暑期多校训练营(第九场)E,并查集 + 线段树)
一.题目链接:All men are brothers二.题目大意:n 个人,m 次操作.每次操作让两个人交朋友,朋友关系互逆且可传递.每次操作后,输出四人组的种数,使得这四个人中每每两个人均不为朋友.三.分析:并查集很容易想到,这题其实可以用组合数学来解的,可惜我太菜,不会。。。这里用线段树写一下.tree[i][j] 代表第 i 个节点所包含的区间内,从中选...原创 2019-08-16 09:57:25 · 113 阅读 · 0 评论 -
Interval GCD(算法竞赛进阶指南,拓展更相减损之术 + 差分数组 + 线段树)
一.题目链接:Interval GCD二.题目大意:有一个长度为 n 的数组 A.现有两种操作:① 使数组 A 中区间 [l, r] 的元素都加 d.② 求出数组 A 中区间 [l, r] 的元素的最大公约数.三.分析:操作 ② 很明显是用线段树来实现,重点在操作 ①.操作① 可以用懒惰标记写,不过这里介绍另一种方法.由更相减损之术得,gcd(x, y) ...原创 2019-09-05 22:46:14 · 217 阅读 · 0 评论 -
Atlantis (POJ - 1151,扫描线模板)
一.题目链接:POJ-1151二.题目大意:求 n 个矩形的面积并.三.分析:模板题.搬运大佬的链接四.代码实现:① O(N^2)#include <set>#include <map>#include <ctime>#include <queue>#include <cmath>#incl...原创 2019-09-10 21:38:09 · 158 阅读 · 0 评论 -
Weak Pair (HDU - 5877 ,DFS + 离散化 + 权值线段树)
一.题目链接:HDU-5877二.题目大意:一棵树,每个节点有一个权值 a[i]。一个 weak对(u, v) 需满足:① u 是 v 的祖先②问有多少个 weak 对.三.分析:dfs 一棵树,对于当前节点 v来说,只需找权值 ≤ k / a[v] 的祖先有多少个.权值线段树查询,每经过一个点便将a[u] 的次数 + 1,结束时将 a[u] 的次数 ...原创 2019-09-26 21:22:23 · 140 阅读 · 0 评论 -
Queue (HDU - 5493,树状数组 + 二分 || 线段树)
一.题目链接:HDU-5493二.题目大意:有 n 个人排队,身高各不相同.给出每个人的身高,以及队中他前面比他高或者后面比他高的人数.若此队伍存在,则输出最小字典序的队伍排列.否则,输出 "impossible".三.分析:因为是求最小字典序,所以先对身高排序,之后再向队中加人.假设第 i (1 ≤ i ≤ n) 个人的身高为 h,队中他前面比他高或者后面比他...原创 2019-07-24 19:06:30 · 196 阅读 · 0 评论 -
Legacy (CodeForces - 787D,线段树建图 + spfa)
一.题目链接:CodeForces-787D二.题目大意:有 n 个点,q 个关系,从起点 s 出发,求单源最短路.其中,关系有三种:①:u v c 表明u 到 v 有一条花费为 c 的路.②:u l r c 表明 u 到区间 [l, r] 内任意一点有一条花费为 c 的路.③:u l r c 表明区间 [l, r] 内任意一点到 u 有一条花费为 c 的路.三....原创 2019-07-07 21:23:15 · 166 阅读 · 0 评论 -
Can you answer these queries?( HDU - 4027,线段树 + 细节)
一.题目链接:HDU-4027二.题目大意:n 个数.有两种操作.0 X Y:将区间 [X, Y] 的数开方(向下取整)1 X Y:查询区间 [X, Y] 的和.三.分析:直接线段树单点更新会 TLE,由于根号 7 次后向下取整为 1.所以只需要记录每段区间被更新过的次数.注意:所给的 X,Y 大小关系不确定因为这里 WA 了三天啊啊啊啊啊啊 555....原创 2019-04-26 19:55:17 · 208 阅读 · 0 评论 -
Tunnel Warfare (HDU - 1540,这也能用线段树 ?!)
一.题目链接:HDU-1540二.题目大意:有 n 个村庄排列在一条线上,编号为 1 ~ n.现有 3 种 m 次操作D x:摧毁第 x 个村庄Q x:查询与第 x 个村庄相邻的村庄数.R:修复上一个被摧毁的村庄.三.分析:当查询与第 x 个村庄相邻的村庄数时只需要查询在 1 ~ x 中被摧毁村庄的最大编号&& 在 x ~ n 中被摧毁村...原创 2019-04-26 22:17:16 · 341 阅读 · 0 评论 -
Mayor's posters (POJ - 2528,离散化 + 线段树)
一.题目链接:POJ-2528二.题目大意:墙的长度 ≤ 1e7,海报个数 ≤ 1e4.按时间顺序,给一堵墙贴海报.每次给出海报贴到墙上的区间,求最后能看到几张海报.三.分析:典型的线段树求区间问题可是墙太长,直接求会 TLE.观察到 n 只有 1e4,那么最多会有 2e4 个点所以先进行离散化处理,再用线段树更改区间.四.代码实现:#includ...原创 2019-04-22 19:46:04 · 224 阅读 · 0 评论 -
Count the Colors (ZOJ - 1610,离散化 + 线段树)
一.题目链接:ZOJ-1610二.题目大意:一条线上,端点编号为 [0,8e3].每次给出一段区间 和 一种颜色编号,在线上的这段区间染色.问每种颜色出现的次数.三.分析:这道题(记为 Q1)与这道题(记为 Q2)不太一样画个图理解一下:可以看到对于 Q1 来说,[3, 4] 区间内为红色,但是节点 3 与 节点 4 相邻,此时不好判断而 Q2 不存在...原创 2019-04-22 23:25:00 · 192 阅读 · 0 评论 -
Vases and Flowers (HDU - 4614,线段树 + 二分 + 思维)
一.题目链接:HDU-4614二.题目大意:有 N个花盆,起初都没有花.1 个花盆只能插 1 朵花.有 m 次 2 种操作.① 1 A F:从第 A 花盆开始插 F 朵花,多余的丢弃.若一朵花都无法插入,则输出 "Can not put any one."否则,输出插花的起点、终点.② 2 A B:将 A ~ B 花盆中的花丢弃,并输出所丢弃的花的个数.三...原创 2019-05-01 20:45:26 · 281 阅读 · 0 评论 -
Assign the task( HDU - 3974,DFS + 线段树)
一.题目链接:HDU-3974二.题目大意:一个整数 n ,表示有 n 位员工.之后 n - 1 行,给出员工 u 与 员工 v 之间的隶属关系.有 2 种 m 次操作C x:查询员工 x 当前的所做任务.T x y:将员工 x 的当前任务改为 y.当员工 x 做任务 y 时,员工 x 的员工也会同时做任务 y,以及员工 x 的员工的员工。。。三.分析:想要...原创 2019-04-27 21:28:49 · 157 阅读 · 0 评论 -
Calculate the Function( ZOJ - 3772,线段树 + 递推矩阵乘积)
一.题目链接:ZOJ-3772二.题目大意:给 n 个数 a[1~n]定义如下:对于每次查询,给出区间端点和的值求出.三.分析:由递推式可得所以我们可以建一颗线段树,节点值存为矩阵,父节点就存为矩阵乘积.然后进行区间查询即可.查询得到的矩阵再乘以矩阵取(0,0)元素即可.因为线段树的遍历顺序,所以...原创 2019-04-24 21:12:05 · 146 阅读 · 0 评论 -
Yet Another Data Structure Problem (ZOJ - 3998,双懒惰标记线段树)
一.题目链接:ZOJ-3998二.题目大意:给你 n 个数 a[1 ~ n].现有 3 种 m 次操作:① l r v 将 a[l ~ r] 的数都乘以 v② l r v 将a[l ~ r] 的数变为 a[l]^v....a[r]^v③ l r 查询 a[l] ×......× a[r].三.分析:双懒惰标记的线段树.详见代码吧...四.代码实现:...原创 2019-04-30 20:33:29 · 154 阅读 · 0 评论 -
Transformation( HDU - 4578 ,多重懒惰标记线段树 + 思维)
一.题目链接:HDU-4578二.题目大意:n 个数 a[1 ~ n].现有 m 次 4 种操作.1 l r c:a[l ~ r] 都 + c2 l r c:a[l ~ r] 都 × c3 l r c:a[l ~ r] 都变为 c4 l r p:查询(p = {1, 2, 3})三.分析:由上述公式便可得每次更新后的 [1, 3]次幂的和....原创 2019-05-01 09:20:32 · 254 阅读 · 0 评论 -
Fast Matrix Operations (UVA - 11992,二维线段树 + 简单应用)
一.题目链接:UVA-11992二.题目大意:有一个 r × c 大小的矩阵,最多有个元素,r ≤ 20.矩阵中元素的初始值均为 0.现有三种操作① 1 x1 y1 x2 y2 v :将 (x1, y1) 到 (x2, y2) 之间的元素都加上值 v.② 2 x1 y1 x2 y2 v:将 (x1, y1) 到 (x2, y2) 之间的元素都置为值 v.③ 3 ...原创 2019-03-24 10:51:25 · 181 阅读 · 0 评论