线段树
文章平均质量分 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 · 237 阅读 · 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 · 369 阅读 · 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 · 772 阅读 · 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 · 187 阅读 · 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 · 236 阅读 · 0 评论 -
Snowy Smile (HDU - 6638,稀疏矩阵子矩阵最大和)
一.题目链接: HDU-6638 二.题目大意: 求稀疏矩阵子矩阵最大和. 三.分析: 离散 x 坐标,枚举 x. 线段树维护区间最大子段和 将的算法优化到了 详见代码. 四.代码实现: #include <set> #include <map> #include <ctime> #include <queue> #inc...原创 2019-08-14 14:32:08 · 368 阅读 · 0 评论 -
All men are brothers(2019牛客暑期多校训练营(第九场)E,并查集 + 线段树)
一.题目链接: All men are brothers 二.题目大意: n 个人,m 次操作. 每次操作让两个人交朋友,朋友关系互逆且可传递. 每次操作后,输出四人组的种数,使得这四个人中每每两个人均不为朋友. 三.分析: 并查集很容易想到,这题其实可以用组合数学来解的,可惜我太菜,不会。。。 这里用线段树写一下. tree[i][j] 代表第 i 个节点所包含的区间内,从中选...原创 2019-08-16 09:57:25 · 146 阅读 · 0 评论 -
Interval GCD(算法竞赛进阶指南,拓展更相减损之术 + 差分数组 + 线段树)
一.题目链接: Interval GCD 二.题目大意: 有一个长度为 n 的数组 A. 现有两种操作: ① 使数组 A 中区间 [l, r] 的元素都加 d. ② 求出数组 A 中区间 [l, r] 的元素的最大公约数. 三.分析: 操作 ② 很明显是用线段树来实现,重点在操作 ①. 操作① 可以用懒惰标记写,不过这里介绍另一种方法. 由更相减损之术得,gcd(x, y) ...原创 2019-09-05 22:46:14 · 278 阅读 · 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 · 208 阅读 · 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 · 177 阅读 · 0 评论 -
Queue (HDU - 5493,树状数组 + 二分 || 线段树)
一.题目链接: HDU-5493 二.题目大意: 有 n 个人排队,身高各不相同. 给出每个人的身高,以及队中他前面比他高或者后面比他高的人数. 若此队伍存在,则输出最小字典序的队伍排列. 否则,输出 "impossible". 三.分析: 因为是求最小字典序,所以先对身高排序,之后再向队中加人. 假设第 i (1 ≤ i ≤ n) 个人的身高为 h,队中他前面比他高或者后面比他...原创 2019-07-24 19:06:30 · 263 阅读 · 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 · 223 阅读 · 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 · 261 阅读 · 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 · 399 阅读 · 0 评论 -
Mayor's posters (POJ - 2528,离散化 + 线段树)
一.题目链接: POJ-2528 二.题目大意: 墙的长度 ≤ 1e7,海报个数 ≤ 1e4. 按时间顺序,给一堵墙贴海报. 每次给出海报贴到墙上的区间,求最后能看到几张海报. 三.分析: 典型的线段树求区间问题 可是墙太长,直接求会 TLE. 观察到 n 只有 1e4,那么最多会有 2e4 个点 所以先进行离散化处理,再用线段树更改区间. 四.代码实现: #includ...原创 2019-04-22 19:46:04 · 263 阅读 · 0 评论 -
Count the Colors (ZOJ - 1610,离散化 + 线段树)
一.题目链接: ZOJ-1610 二.题目大意: 一条线上,端点编号为 [0,8e3]. 每次给出一段区间 和 一种颜色编号,在线上的这段区间染色. 问每种颜色出现的次数. 三.分析: 这道题(记为 Q1)与这道题(记为 Q2)不太一样 画个图理解一下: 可以看到对于 Q1 来说,[3, 4] 区间内为红色,但是节点 3 与 节点 4 相邻,此时不好判断 而 Q2 不存在...原创 2019-04-22 23:25:00 · 239 阅读 · 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 · 340 阅读 · 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 · 209 阅读 · 0 评论 -
Calculate the Function( ZOJ - 3772,线段树 + 递推矩阵乘积)
一.题目链接: ZOJ-3772 二.题目大意: 给 n 个数 a[1~n] 定义如下: 对于每次查询,给出区间端点和的值 求出. 三.分析: 由递推式可得 所以我们可以建一颗线段树,节点值存为矩阵,父节点就存为矩阵乘积. 然后进行区间查询即可. 查询得到的矩阵再乘以矩阵取(0,0)元素即可. 因为线段树的遍历顺序,所以...原创 2019-04-24 21:12:05 · 208 阅读 · 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 · 204 阅读 · 0 评论 -
Transformation( HDU - 4578 ,多重懒惰标记线段树 + 思维)
一.题目链接: HDU-4578 二.题目大意: n 个数 a[1 ~ n]. 现有 m 次 4 种操作. 1 l r c:a[l ~ r] 都 + c 2 l r c:a[l ~ r] 都 × c 3 l r c:a[l ~ r] 都变为 c 4 l r p:查询(p = {1, 2, 3}) 三.分析: 由上述公式便可得每次更新后的 [1, 3]次幂的和....原创 2019-05-01 09:20:32 · 290 阅读 · 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 · 238 阅读 · 0 评论
分享