线段树
文章平均质量分 61
moomhxy
你若是天才,我便是疯子
展开
-
Codeforces Round #636 (Div. 3) D. Constant Palindrome Sum 线段树区间修改 差分
题目链接:http://codeforces.com/contest/1343/problem/D题意:给你n个元素的序列,你可以每次将一个数变成[1, k]的值,现在要求a[i] + a[n - i + 1] = 定值问最少修改几个数就可以得到满足条件的序列思路:这个定值一定是某对和,所以我们考虑将a[i] + a[n - i + 1]的和改为某个值需要修改0,1还是2个数可以发现是在某...原创 2020-04-30 15:20:25 · 213 阅读 · 0 评论 -
CodeForces 915E Physical Education Lessons 线段树动态开点
题目链接:https://codeforces.com/problemset/problem/915/E题意:q次操作,每次将一段区间置0或者置1,然后输出1~n中0的个数思路:由于n太大,所以我们考虑线段树动态开点,可以大大减少点的数量便于维护,这也是一道动态开点的模板题#include<bits/stdc++.h>using namespace std;typedef...原创 2020-04-08 18:56:39 · 219 阅读 · 0 评论 -
BAPC 2019 G. Gluttonous Goop 线段树扫描线
题目链接:https://nanti.jisuanke.com/t/44323题意:有若干个小方块,每秒会往八个方向扩展,问k秒后有多少个区域被覆盖思路:k秒后每个格子都扩展成了一个矩形,所以也就是求矩形面积并,用扫描线很好解决。#include<bits/stdc++.h>using namespace std;typedef long long ll;#defin...原创 2020-03-24 13:22:48 · 284 阅读 · 0 评论 -
HDU 6606 - Distribution of books【线段树+DP+二分答案】
zz6d非常喜欢读书,所以他买了很多书。有一天,zz6d带了n本书到学校的教室。zz6d的书很受欢迎,以至于K课堂的学生都想借他的书来阅读。每本zz6d都有一个数字i(1 <= i <= n)。课堂上的每个学生都希望获得连续数字的书籍。每本书都有一个愉快的价值,可以是0甚至是负数(引起不适)。现在zz6d需要将这些书分发给K学生。每个学生的快乐价值被定义为他获得的所有书籍的快乐价值的总...原创 2019-08-08 20:58:41 · 352 阅读 · 0 评论 -
牛客网 xor 【线段树+线性基】
题目链接:https://ac.nowcoder.com/acm/contest/884/B题意: 给你n个集合,m次询问,每次问你[l, r] 的集合能否表示x。所以我们用线段树来维护线性基的交,又多了个板子,,,#include <bits/stdc++.h>using namespace std;typedef long long ll;#defin...原创 2019-08-18 19:21:54 · 200 阅读 · 0 评论 -
牛客网 Governing sand【权值线段树】
哇村经常遭遇风沙,沙尘暴严重阻碍了哇村的经济发展。 Wowo村前面有一片森林,这片森林可以防止风沙侵袭。 但是有一个规则,即森林中最高的树木数量应该超过所有树木的一半,这样才能防止风沙侵袭。 砍伐一棵树需要花费一定的钱。 不同种类的树木花费不同的钱。 哇村也很穷。 有n种树木。 第i种树的数量是,第i种树的高度,减少一种第i种树的成本。 (注意:“砍伐树木”意味着从森林中移除树木,不能将树木切割成...原创 2019-08-09 13:03:34 · 239 阅读 · 0 评论 -
牛客网 Explorer 【线段树+可撤销并查集】
题意:Gromah和LZR已进入第五级。与前四个级别不同,他们应该在这个级别做一些动作。此级别有nn _ {} n个顶点和mm _ {} m双向道路,每条道路的格式为(u,v,l,r)(u,v,l,r)_ {}(u,v ,l,r),这意味着顶点uu _ {} u和vv _ {} v通过这条道路连接,但路人的大小应该在区间[l,r] [l,r] _ {} [L,R]。由于小尺寸的路人很可能会受...原创 2019-08-23 21:02:28 · 240 阅读 · 0 评论 -
牛客网 Find the median 【线段树区间】
https://ac.nowcoder.com/acm/contest/887/E 题目链接题意:每次给你增加一个区间[l, r] ,问你增加后新集合的中位数。思路:对x,y离散化,右端点加一,有篇博客解释很详细:点开链接, 记录下点映射的区间的长度和 出现总数,然后我们只需要每次查第k小就行了。#include <bits/stdc++.h>using namesp...原创 2019-08-16 00:38:16 · 156 阅读 · 0 评论 -
牛客网 Popping Balloons 【线段树】
题意:在坐标轴上给你n个点(n<=1e5),点的横纵坐标是[0, 1e5],你可以从选3行,每行间隔是d,选3列同样间隔d,点只能被选一次,问你最多能选多少点。d<=1e5思路:我们考虑对列建一棵线段树,每个结点放的是num[j] + num[j + d] + num[j + 2d] 的值,然后我们枚举行的同时删除选中的点,然后线段树查询最大值就行了。删除点的时候只会对自己x,x-...原创 2019-08-22 15:47:00 · 240 阅读 · 0 评论 -
P4513 小白逛公园【线段树维护最大子段和】
题意:就是维护带更新的最大子段和。思路:sum是维护和,lm维护的是从左端点开始的答案,rm维护的是从右端点开始的答案,ans记录的就是答案。那么在更新的时候,举个例子,更新lm时,要不就是左儿子的区间,或者跨过mid包含部分右区间的答案。ans呢就是左右儿子的答案或者左右两个区间同时包含的答案。在查询的时候要注意,跟平常的查询略有不同。#include <bits/std...原创 2019-09-04 12:20:26 · 179 阅读 · 0 评论 -
HDU 6638 Snowy Smile【线段树维护最大子段和】
Snowy SmileTime Limit: 4000/4000 MS (Java/Others)Memory Limit: 524288/524288 K (Java/Others)Problem DescriptionThere arenpirate chests buried in Byteland, labeled by1,2,…,n. Thei-th ch...原创 2019-09-04 16:40:45 · 298 阅读 · 0 评论 -
HDU 6681 Rikka with Cake【线段树查询射线交点数】
题意:给你一个n*m的矩形,然后给你k个射线,每个射线向上下左右四个方向,问你这个区间能被划分成多少块。思路:好像可以根据欧拉定理推出来,反正我当时推了几个发现答案就是交点个数+1,所以我们只需要统计交点个数就行了。我是用的线段树,我们将竖线看做线段,在y轴上做一个线段树,那么如何来统计交点呢?我们枚举每个竖线,对于统计它会和多少个横线相交就行了。所以我们需要预处理横线,假设'L' 方向的...原创 2019-09-07 20:46:03 · 180 阅读 · 0 评论 -
CCPC-Wannafly & Comet OJ 夏季欢乐赛(2019)D 茶颜悦色【线段树维护矩形内最多点数】
题目链接:https://cometoj.com/contest/59/problem/D?problem_id=2713题意:给你一个二维平面,然后再给你n个点,让你找一个边长为K的正方形,使得正方形内包含的点最多。思路:由于正方形边长固定为k,我们现在只考虑点对y轴的贡献,那么一个点(x, y) 会对[y, y + k] 这个区间的贡献+1。所以我们对y轴建树,所有点按x轴排序,然后固...原创 2019-09-10 22:54:34 · 208 阅读 · 0 评论 -
HDU 2795 Billboard【线段树】
每年开学,正是各大社团招新之际。每个社团为了吸引更多的小学妹小学弟就会派出身强体壮的华师男去海报墙上粘贴海报。开学之初,高为h,宽为w的海报墙还是空的。然后,华师男轮流粘贴高为1,宽为wi的海报。贴海报时,机智的华师男总是会优先选择最上面的位置来帖,而且在所有最上面的可能位置中,他会选择最左面的位置。但是不能把已经贴好的海报盖住并且不能超出海报墙的范围。机智的华师男能够自然能够...原创 2019-09-11 20:27:27 · 196 阅读 · 0 评论 -
HDU 5692 Snacks【线段树+DFS序】
百度科技园内有nn个零食机,零食机之间通过n−1n−1条路相互连通。每个零食机都有一个值vv,表示为小度熊提供零食的价值。由于零食被频繁的消耗和补充,零食机的价值vv会时常发生变化。小度熊只能从编号为0的零食机出发,并且每个零食机至多经过一次。另外,小度熊会对某个零食机的零食有所偏爱,要求路线上必须有那个零食机。为小度熊规划一个路线,使得路线上的价值总和最大。Input输入数据第一行是...原创 2019-09-12 10:40:07 · 161 阅读 · 0 评论 -
HDU 6609-Find the answer【权值线段树】
Problem DescriptionGiven a sequence of n integers called W and an integer m. For each i (1 <= i <= n), you can choose some elementsWk(1 <= k < i), and change them to zero to make∑ij=1...原创 2019-08-01 18:51:33 · 179 阅读 · 0 评论 -
POJ 2299-Ultra-QuickSort【权值线段树】
题意让你求逆序对,之前用归并排序求过,后来又用树状数组求过,现在又用了权值线段树求了一波,思路很简单,先离散化,然后增加结点,每次查询当前的排名计算。#include<cstdio>#include<vector>#include<cstring>#include<iostream>#include<algorithm>u...原创 2019-07-29 23:42:16 · 190 阅读 · 0 评论 -
蓝桥杯ALGO8- 算法训练 操作格子 【线段树】
问题描述有n个格子,从左到右放成一排,编号为1-n。共有m次操作,有3种操作类型:1.修改一个格子的权值,2.求连续一段格子权值和,3.求连续一段格子的最大值。对于每个2、3操作输出你所求出的结果。输入格式第一行2个整数n,m。接下来一行n个整数表示n个格子的初始权值。接下来m行,每行3个整数p,x,y,p表示操作类型,p=1时表示修改格子x的权值为y,p=...原创 2018-11-19 22:50:58 · 168 阅读 · 0 评论 -
POJ3468 - A Simple Problem with Integers【线段树】
DescriptionYou have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The other is to...原创 2018-11-22 22:35:17 · 135 阅读 · 0 评论 -
线段树模板
线段树 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。 使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间...原创 2018-11-18 10:27:07 · 215 阅读 · 0 评论 -
HDU1166-敌兵布阵【线段树】
Lily特别喜欢养花,但是由于她的花特别多,所以照料这些花就变得不太容易。她把她的花依次排成一行,每盆花都有一个美观值。如果Lily把某盆花照料的好的话,这盆花的美观值就会上升,如果照料的不好的话,这盆花的美观值就会下降。有时,Lily想知道某段连续的花的美观值之和是多少,但是,Lily的算术不是很好,你能快速地告诉她结果吗?Input第一行一个整数T,表示有T组测试数据。每组测试数据...原创 2019-04-28 21:37:50 · 189 阅读 · 0 评论 -
HDU1754-I Hate It 【线段树】
很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。这让很多学生很反感。不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。Input本题目包含多组测试,请处理到文件结束。在每个测试的第一行,有两个正整数 N 和 M ( 0<N<=200000,0<M<5...原创 2019-04-28 21:39:46 · 150 阅读 · 0 评论 -
POJ3468-A Simple Problem with Integers 【线段树】
You haveNintegers,A1,A2, ... ,AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The other is to ask for the ...原创 2019-04-28 21:41:30 · 83 阅读 · 0 评论 -
HDU1698-Just a Hook 【线段树】
In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. The hook is made up of several consecutive metallic sticks which are of the same length.Now Pud...原创 2019-04-28 21:43:48 · 209 阅读 · 0 评论 -
POJ2528-Mayor's posters 【线段树+离散化】
题目:n(n<=10000)个人依次贴海报,给出每张海报所贴的范围li,ri(1<=li<=ri<=10000000)。求出最后还能看见多少张海报。Input 第一行:样例个数T 第二行:贴海报的人n 第三行:每个人贴海报的范围 接下来n行:每个人贴海报的范围Output对于每一个...原创 2019-05-24 12:36:44 · 215 阅读 · 0 评论 -
HDU6521-Party【吉司机线段树】
nperson have just entered a company, and Xiaoxun, as a supervisor, gives each of them a number from 1 to n that is not repeated.In order to let them to get to know each other better, they would hav...原创 2019-05-12 21:43:27 · 304 阅读 · 0 评论 -
POJ3264-Balanced Lineup 【线段树】
For the daily milking, Farmer John'sNcows (1 ≤N≤ 50,000) always line up in the same order. One day Farmer John decides to organize a game of Ultimate Frisbee with some of the cows. To keep things ...原创 2019-05-26 12:12:21 · 158 阅读 · 0 评论 -
牛客网 小石的妹子【线段树+离散化】
小石有 n 个妹子,每个妹子都有一个细心程度 aiai和一个热心程度 bibi,小石想给她们一个重要程度 titi(重要程度为 1 表示最重要,重要程度越小表示越重要)。如果一个妹子 i 的细心程度和热心程度都比妹子 j 大,那么妹子 i 的重要程度要大于妹子 j 的重要程度,即妹子 i 比妹子 j 重要。流程如下:每次从所有没有重要程度的妹子中,找到若干妹子。对于这些妹子的任意一...原创 2019-07-14 16:01:07 · 225 阅读 · 0 评论 -
牛客网 小阳的贝壳【线段树维护区间最大公约数】
小阳手中一共有 n 个贝壳,每个贝壳都有颜色,且初始第 i 个贝壳的颜色为 colicoli 。现在小阳有 3 种操作:1 l r x:给 [l,r][区间里所有贝壳的颜色值加上 x。2 l r:询问 [l,r][区间里所有相邻贝壳 颜色值的差(取绝对值) 的最大值(若 l=r输出 0)。3 l r :询问 [l,r]区间里所有贝壳颜色值的最大公约数。输入描述:第一...原创 2019-07-14 21:21:32 · 296 阅读 · 0 评论 -
牛客网 sequence 【线段树+单调栈】
官方题解:• 假设a中的元素互不相同,我们考虑a中的某个元素作为min的时刻。• 对于每个a[i],我们找到左边第一个比它大的元素a[l],右边第一个比它大的a[r]• 那么左端点在[l+1,i],右端点在[i,r-1]的区间min就为它。• 求l和r可以使用单调栈。• 考虑如何求某个a[i]作为min的答案。• 如果a[i]>0我们就是要最大化sum(b[l..r])。a...原创 2019-07-29 18:33:02 · 233 阅读 · 0 评论 -
牛客网 Points Division 【线段树+DP】
题意:给你二维平面上的n个点,让你用单调不降的折线划分成A, B两个集合,其中不会有A中的点i,B中的点j,出现xi >= xj, 但是yi <= yj 的情况。思路:这题还是有点不理解,不过确实是一道非常不错的题目,先收起来。#include<bits/stdc++.h>using namespace std;typedef long lon...原创 2019-07-29 18:46:34 · 228 阅读 · 0 评论 -
HDU 3874-Necklace【线段树离线】
题意:给你n个数和m个询问,每次询问区间[l, r] 里不相同的数的和。思路:在线复杂度是略大的,所以考虑离线去做。将区间按右端点排序,然后从左端开始遍历,每次对于之前出现过的节点将之前的节点改为0,然后记录新节点位置并更新,对于之前没有出现过的节点则直接更新就行了。#include <bits/stdc++.h>using namespace std;typedef l...原创 2019-07-24 20:05:10 · 169 阅读 · 0 评论 -
POJ1754 - I Hate It【线段树】
Problem Description很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。这让很多学生很反感。不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。 Input本题目包含多组测试,请处理到文件结束。在每个测试的第一行,有两个正整数 N 和 M ( 0<N&l...原创 2018-11-18 22:19:13 · 167 阅读 · 0 评论