DS-线段树
文章平均质量分 88
ljq真的不能再吃了
珍惜每一天
展开
-
CERC2017 I: Intrinsic Interval 线段树
CERC2017I题目是求最小的好区间好区间就是一段区间都是连续的数 对于好区间显然有个数据结构叫析和树是可以求解的但是我们用线段树怎么处理呢首先我们知道 好区间 l 到 r是满足区间maxx-区间minn = r - l然后我们又知道 两个好区间的交 一定也是好区间反证法:假如这个交不是好区间 差几个数 那么这几个数如果在左边 那么和右边的数就不能构成好区间所以两个好区间的交也一定...原创 2019-11-01 11:57:39 · 254 阅读 · 0 评论 -
计蒜客习题 排序 离散化加树状数组求逆序对
经典题了下面代码应该好懂我用的是映射的离散化注意先查询再插入#include <cstdio>#include <cstring>#include <iostream>#include <cmath>#include <algorithm>#include <map>using namespace std;int...原创 2018-06-11 11:26:23 · 133 阅读 · 0 评论 -
树状数组 单点更新 区间更新 单点查询 区间查询 学习笔记
单点更新 没啥好说的区间更新的时候我们只能对前缀和建树 那么我们建树呢?运用差分delta[i]=a[i]-a[i-1]那么delta的合不就是a[i]了吗 单点查询不就做到了吗 对这样建立的一棵树 我们只需要 让s后面+val,t+1后面-val 代表a[s]-a[s-1]多了val a[t+1]-a[t]少了val板子#include <iostream> using na...原创 2018-06-11 16:39:58 · 380 阅读 · 0 评论 -
HDU 1542 Atlantis 线段树 扫描线 离散化
AtlantisTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8998 Accepted Submission(s): 3856Problem DescriptionThere are several ancient Greek t...原创 2018-06-11 19:57:41 · 205 阅读 · 0 评论 -
线段树 扫描线总结 学习笔记
看了若干神牛的文章 对线段树的扫描线总算入门了求面积就是离散化坐标 从下往上离散横坐标 水平扫描离散纵坐标 从下往上为例 下边定义值为1 上边定义值为-1在扫的过程中就能通过更新操作得到底边长 用高度差相乘就是面积其实还是比较好实现的 板子代码using namespace std; #define lson l , m , rt << 1 #define rson m...原创 2018-06-11 20:09:46 · 240 阅读 · 0 评论 -
计蒜客习题 矩形的面积并
简单的线段树加扫描线离散化板子题#include <cstdio>#include <iostream>#include <cstring>#include <cmath>#include <algorithm>using namespace std;#define lson l , m , rt << 1#de...原创 2018-06-12 10:10:12 · 314 阅读 · 0 评论 -
计蒜客习题 矩形的周长并 线段树 线扫描 离散化
以前以为胡浩大神的点树我改成区间树 结果这题最后一个数据竟然爆了以后还是老老实实用点树把这饭真香#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define lson l , m , rt <&...原创 2018-06-12 00:36:48 · 215 阅读 · 0 评论 -
HDU 4027 Can you answer these queries? 线段树 区间修改与查询
Can you answer these queries?Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others)Total Submission(s): 8122 Accepted Submission(s): 1845Problem DescriptionA lot of bat...原创 2018-06-12 20:34:30 · 239 阅读 · 0 评论 -
转 二维线段树 解决矩形区域最大问题
二维线段树 二维线段树最主要用于平面统计问题。类似一维线段树,最经典的就是求区间最值(或区间和),推广到二维,求得就是矩形区域最值(或矩形区域和),对于矩形区域和,二维树状数组更加高效,而矩形区域最值,更加高效的方法是二维RMQ,但是二维RMQ不支持动态更新,所以二维线段树还是有用武之地的。 如果对一维线段树已经驾轻就熟,那么直接来看下面两段对比,就可以轻松理解二维线段树了。 ...转载 2018-06-12 22:49:03 · 678 阅读 · 0 评论 -
UVA 11992 Fast Matrix Operations
Fast Matrix OperationsThere is a matrix containing at most 106 elements divided into r rows and c columns. Each element has a location (x,y) where 1<=x<=r,1<=y<=c. Initially, all the eleme...原创 2018-06-13 00:49:02 · 114 阅读 · 0 评论 -
POJ 3667 HOTEL
HotelTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 19502 Accepted: 8491DescriptionThe cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and enjoy a vacation on...原创 2018-06-13 11:18:38 · 199 阅读 · 0 评论 -
POJ 3468 线段树区间更新 懒惰标记 区间求和
A Simple Problem with IntegersTime Limit: 5000MS Memory Limit: 131072KTotal Submissions: 132386 Accepted: 41056Case Time Limit: 2000MSDescriptionYou have N integers, A1, A2, ... , AN. You need to deal...原创 2018-06-13 11:38:55 · 151 阅读 · 0 评论 -
POJ 2777 Count color 统计颜色 线段树
Count ColorTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 50214 Accepted: 15139DescriptionChosen Problem Solving and Program design as an optional course, you are required to solve all kind...原创 2018-06-13 15:25:25 · 160 阅读 · 0 评论 -
2018年湘潭大学程序设计竞赛 H题统计颜色题解
链接:https://www.nowcoder.com/acm/contest/105/H来源:牛客网时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld题目描述n个桶按顺序排列,我们用1~n给桶标号。有两种操作: 1 l r c 区间[l,r]中的每个桶中都放入一个颜色为c的球 (1≤l,r ≤n,l≤r,0...原创 2018-06-13 15:35:28 · 258 阅读 · 0 评论 -
FOJ 1921 栀子花开 线段树裸题
Problem 1921 栀子花开Accept: 345 Submit: 1219Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description这是一个栀子花开的季节,也是一个离别的季节,四年一千多个日日夜夜,那校园的角角落落,留下了我们沉思的身影;那上百次的成绩排名表,印证了我们深深浅浅不断进步的轨迹,但是这些进步...原创 2018-06-13 16:26:01 · 256 阅读 · 0 评论 -
HDU 1754 线段树裸题
I Hate ItTime Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 94995 Accepted Submission(s): 35953Problem Description很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当...原创 2018-06-13 16:46:59 · 125 阅读 · 0 评论 -
HDU 3308 LCIS 线段树维护区间LCIS
LCISTime Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8537 Accepted Submission(s): 3662Problem DescriptionGiven n integers.You have two operati...原创 2018-06-13 19:59:53 · 166 阅读 · 0 评论 -
HDU 4578 线段树
TransformationTime Limit: 15000/8000 MS (Java/Others) Memory Limit: 65535/65536 K (Java/Others)Total Submission(s): 6945 Accepted Submission(s): 1754Problem DescriptionYuanfang is puzzled with t...原创 2018-06-14 00:16:29 · 146 阅读 · 0 评论 -
POJ2528 Mayor's posters 线段树
POJ 2528 Mayor's posters 线段树Mayor's postersTime Limit: 1000MSMemory Limit: 65536KTotal Submissions: 39344Accepted: 11424DescriptionThe citizens of Bytetown, AB, could not stand that the candidates in ...原创 2018-06-14 11:25:21 · 100 阅读 · 0 评论 -
UESTC DS A 一颗简单的线段树 线段树
A - 一棵简单的线段树Time Limit: 2000 MS Memory Limit: 256 MBSubmit Status人生已如此艰难,让我们活得轻松一点.给你一个数组 A[1..n]A[1..n],初始时每个元素都为零.我会请你帮我对数组完成一些操作.第一种可能,我会给你两个数 pp 和 xx(1≤p≤n1≤p≤n), 请你帮我把数组的第 pp 个元素替换为 xx, 即 A[p...原创 2018-06-14 11:31:03 · 415 阅读 · 0 评论 -
USETC B 一颗普通的线段树 裸线段树
B - 一棵普通的线段树Time Limit: 4000 MS Memory Limit: 256 MBSubmit Status出题人明天就要半期考试了,课程是《火葬场与波》. 出题人倒在血泊中,一双有力的手摇晃着出题人的肩膀: “同志,醒醒,你还有题没出完呢”. 以下是他的遗言:给你一个数组 A[1..n]A[1..n],初始值全为 0. 你需要写一棵裸的区间修改、区间查询的线段树, ...原创 2018-06-14 11:32:19 · 498 阅读 · 0 评论 -
HDU 1540 Tunnel Warfare 地道战 线段树
Tunnel WarfareTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 11746 Accepted Submission(s): 4596Problem DescriptionDuring the War of Resistan...原创 2018-06-14 21:48:11 · 294 阅读 · 0 评论 -
FZU 2171 防守阵地Ⅱ 线段树
Problem 2171 防守阵地 IIAccept: 401 Submit: 1454Time Limit: 3000 mSec Memory Limit : 32768 KB Problem Description部队中总共有N个士兵,每个士兵有各自的能力指数Xi,在一次演练中,指挥部确定了M个需要防守的地点,指挥部将选择M个士兵依次进入指定地点进行防守任务,获得的参考指数即为M个...原创 2018-06-15 10:17:22 · 138 阅读 · 0 评论 -
计蒜客 黑白石头 统计连续子列
思路就是建两颗树 左树1 为黑树 右树0为白树 ^=来操作懒惰标记统计左 中 右 连续子列 完成题目要求#include <cstdio>#include <iostream>#include <cstring>#include <cmath>#include <algorithm>using namespace std;co...原创 2018-06-08 15:15:16 · 251 阅读 · 1 评论 -
HDU 1698 Just a Hook 线段树 成段替换
Just a HookTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 15645 Accepted Submission(s): 7750Problem DescriptionIn the game of DotA, Pudge’s ...原创 2018-06-08 15:29:39 · 113 阅读 · 0 评论 -
HDU 3397 Sequence operation 线段树 注意细节
Sequence operationTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5626 Accepted Submission(s): 1669Problem Descriptionlxhgww got a sequence ...原创 2018-06-15 13:15:57 · 147 阅读 · 0 评论 -
HDU 1166 敌兵布阵
HDU 1166 敌兵布阵近似于裸的线段树#include <stdio.h>#include <string>#include <string.h>#include <cmath>#include <iostream>using namespace std;const int MAX_N = 50010;int s[4*M...原创 2018-06-15 14:42:59 · 109 阅读 · 0 评论 -
POJ 2352 Stars 树状数组
StarsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 52536 Accepted: 22610DescriptionAstronomers often examine star maps where stars are represented by points on a plane and each star has Ca...原创 2018-06-09 13:33:12 · 123 阅读 · 0 评论 -
计蒜客习题 木桩涂涂看 树状数组&&差分
题意说的是给a,b区间涂色 问你1-n每个点被涂色多少次那么我们在change函数里注意是change(a,1) change(b+1,-1)用了差分然后getsum直接是第几个 因为我们用差分处理过了 不需要getsum(i)-getsum(i-1)#include <cstdio>...原创 2018-06-09 13:48:59 · 195 阅读 · 0 评论 -
计蒜客习题 校长的问题 树状数组+离线查询
由于蒜厂没法复制百度这题的小伙伴应该也是看过题面的题意就是给你n个按学号排序的成绩m个查询 a b 意思为学号为前a名同学有多少前b名成绩就是用树状数组维护每个数字出现多少次对于查询我们进行离线操作(第一次接触 以后要掌握就可以解决了/*这是我第一道离线查询的题目希望能掌握 by ljjjjjq*/#include <cstdio&g...原创 2018-06-10 09:56:12 · 251 阅读 · 0 评论 -
计蒜客习题 奇怪的报数游戏 逆思维树状数组
题目大意就是给你n个人 除了第一个人 的前面比他小的人数 比如input51210output24531我们怎么看这道题呢?首先我们对最后一个人来说 如果他前面有i个比他小的 那么他一定是第i+1个人那么我们把他更新出来进行change操作 然后对倒数第二个人来说 他就是前面比他小的后面比他小的+1怎么进行确定L呢?进行二分查找 题目解决#include <stdio.h&g...原创 2018-06-11 08:01:53 · 253 阅读 · 0 评论 -
计蒜客习题 矩阵操作 二维树状数组
题目描述 给你一个n×n的矩阵 一定面积内的可以从0->1,1->0;input C为修改 x1 y1 x2 y2 Q为查询单点 x1 y1左上角 x2 y2右下角2 10C 2 1 2 2Q 2 2C 2 1 2 1Q 1 1C 1 1 2 1C 1 2 1 2C 1 1 2 2Q 1 1C 1 1 2 1Q 2 1output1...原创 2018-06-11 08:56:01 · 241 阅读 · 2 评论 -
计蒜客习题 矩阵查询 二维树状数组 单点更新 区间求和
题意就是单点+c问你一个面积内元素和是多少简单的容斥乱搞一下就出来了#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <string>using namespace std;const int MAX_N = 1024...原创 2018-06-11 09:09:00 · 138 阅读 · 0 评论 -
st表与树状数组求RMQ问题
st表其实就是运用dp思想解决RMQ问题你想解决这个区间长度 那我开一个二维数组dp[i][j] 长度为2^j 代表区间[i,i+2^j-1]那么显而易见 我们可以继续再分 分的基础是什么呢 就是[i,2^(j-1)-1],[2^(j-1)-1,,i+2^j-1]同理是不是最后得到什么?没错 就是j=0时候 那么长度为1 就是原数组 我再回来不就得到min了吗?在线查询怎么做?那么我既然是等分的 ...原创 2018-06-11 09:52:00 · 302 阅读 · 0 评论 -
计蒜客习题 蒜头君的任务 树状数组解决RMQ或ST表
原题应该是BZOJ的某一题既然你是搜计蒜客的 你应该知道题意了我们怎么操作呢?就是按题意把输入的a数组进行更新 然后再change getsum即可树状数组实现#include <cstdio>#include <cstring>#include <cmath>#include <iostream>#include <algorithm...原创 2018-06-11 10:17:09 · 218 阅读 · 0 评论 -
POJ 2777
Count ColorTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 50518 Accepted: 15251DescriptionChosen Problem Solving and Program design as an optional course, you are required to solve all kind...原创 2018-07-13 22:16:09 · 255 阅读 · 0 评论 -
POJ 2823 线段树
Sliding WindowTime Limit: 12000MS Memory Limit: 65536KTotal Submissions: 68816 Accepted: 19510Case Time Limit: 5000MSDescriptionAn array of size n ≤ 106 is given to you. There is a sliding window of s...原创 2018-07-13 22:20:30 · 146 阅读 · 0 评论 -
POJ 2528 线段树
Mayor's postersTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 75005 Accepted: 21633DescriptionThe citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campa...原创 2018-07-13 22:22:15 · 127 阅读 · 0 评论 -
POJ 3264 线段树最大值最小值
Balanced LineupTime Limit: 5000MS Memory Limit: 65536KTotal Submissions: 61974 Accepted: 28945Case Time Limit: 2000MSDescriptionFor the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line...原创 2018-07-13 22:23:48 · 160 阅读 · 0 评论 -
UVA 11992 Fast Matrix Operations 线段树
UVA 11992对矩阵操作我们容易想到二维线段树或者二维树状数组但是这题不需要二维 由于r<=20 所以我们开20个线段树就可以记录了 不过要注意一下set和add的先后顺序即可#include <cstdio>#include <cstring>#include <iostream>#include <stack>#i...原创 2018-10-16 20:04:43 · 125 阅读 · 0 评论