线段树
文章平均质量分 88
九野的博客
这个作者很懒,什么都没留下…
展开
-
Codeforces round #321 (DIV. 2)
题解链接:http://www.cygmasot.com/index.php/2015/09/23/codeforces_580/链接A:Kefa and First Steps题意:the length of the maximum non-decreasing subsegment直接搞,水题#include #include #i原创 2015-09-23 21:51:35 · 1825 阅读 · 0 评论 -
Spoj 6779 Can you answer these queries VII 树链剖分 在树上任意路径的最大子段和 区间修改点权
题目链接:点击打开链接题意:rt。。在询问时,两端向上爬时记录从深度浅的到深度深的方向上的 (也就是左最大连续子段和)最后两个点在同一条重链上时合并。合并时要注意有4种情况, 详见代码。线段树部分和5相似。#include #include #include #include using namespace std;inline void rd(int &n)原创 2014-09-02 13:00:00 · 1971 阅读 · 0 评论 -
Spoj 2916 Can you answer these queries V 线段树 求任意重叠区间的最大子段和
题目链接:点击打开链接题意:T个测试数据n个数字q个询问每个询问 : [x1, y1] [x2, y2] 问:int ans = -inf;for(int i = x1; i <= y1; i++) for(int j = max(x2, i); j <= y2; j++) ans = max(ans, query(i, j));#include #inc原创 2014-09-01 16:20:52 · 1600 阅读 · 0 评论 -
Spoj 2713 Can you answer these queries IV 水线段树
题目链接:点击打开链接题意:给定n长的序列下面2个操作0 x y 给[x,y]区间每个数都 sqrt1 x y 问[x, y] 区间和#include #include #include #include #include #include #include #include using namespace std;#define ll long long原创 2014-09-01 10:10:59 · 1243 阅读 · 0 评论 -
Spoj 1716 Can you answer these queries III 线段树 单点修改 区间求最大子段和
题目链接:点击打开链接== 原来写1的时候已经把更新函数写好了。。#include #include #include #include #include #include #include using namespace std;#define N 50050#define Lson(x) tree[x].l#define Rson(x) tree[x].r原创 2014-08-31 19:11:12 · 1673 阅读 · 0 评论 -
Spoj 1557 Can you answer these queries II 线段树 任意区间最大子段和 不重复数字
题目链接:点击打开链接每个点都是最大值,把一整个序列和都压缩在一个点里。#include #include #include #include #include using namespace std;#define N 100005#define Lson(x) (x<<1)#define Rson(x) (x<<1|1)#define L(x) tre原创 2014-08-31 13:39:57 · 1682 阅读 · 0 评论 -
UVALive 4730 Kingdom 线段树+并查集
题目链接:点击打开链接题意见白书P248思路:先把读入的y值都扩大2倍变成整数然后离散化一下用线段树来维护y轴 区间上每个点的 城市数量和联通块数量,然后用并查集维护每个联通块及联通块的最大最小y值,还要加并查集的秩来记录每个联通块的点数然后就是模拟搞。。T^T绝杀失败题。。似乎数组开小了一点就过了,==#include#include#includ原创 2014-08-16 23:59:23 · 1624 阅读 · 0 评论 -
Codeforces 444C DZY Loves Colors 线段树
题目链接:http://codeforces.com/contest/444/problem/C线段树水题。。#include #include #include #include #include #include #include #include using namespace std;#define ll long long#define L(x) (x<<1)原创 2014-08-17 10:23:32 · 1315 阅读 · 0 评论 -
Codeforces 458C Elections 贿赂选票抢主席! 线段树
题目链接:点击打开链接题意:给定n张选票,每张选票有2个参数,第一个参数表示这张选票选的人第二个参数表示如果让这张选票改为选0号 的花费问:使得0号的选票是最高的(不能有和0号相同)的最小花费枚举0号的最终选票那么已知0号最终选票,则有些人选票比0号大的,那些票都要买下来。如果买完了还是达不到 最终选票,就从所有剩下的选票里找前k小的。用线段树求前k小的数的原创 2014-08-11 14:13:43 · 1679 阅读 · 0 评论 -
HDU 4973 A simple simulation problem. 线段树
题意:给定n长的序列 m个操作序列默认为 1, 2, 3···n操作1:D [l,r] 把[l,r]区间增长 :( 1,2,3,4 进行 D [1,3]变成 1,1,2,2,3,3,4 )操作2:Q [l,r] 问区间[l,r] 上出现最多次数的数 的次数线段树,维护每个区间的size 和叶子节点中最大的size开始二分查找size的前缀和,逗了一场。。其实直接dfs就好了原创 2014-08-21 19:41:51 · 1629 阅读 · 0 评论 -
SPOJ 1043 Can you answer these queries I 求任意区间最大连续子段和 线段树
题目链接:点击打开链接维护区间左起连续的最大和,右起连续的和。。#include #include #include #include #include #include #include using namespace std;#define N 50050#define Lson(x) tree[x].l#define Rson(x) tree[x].r#defi原创 2014-08-18 23:16:45 · 2008 阅读 · 1 评论 -
HDU 4970 Killing Monsters 线段树 || 树状数组
。。卡常数T^T#include #include const int MAX_N = 100007;#define lson idx<<1#define rson idx<<1|1struct Node { int l, r; long long add, sum;};int n, m, k;long long f[MAX_N];long long原创 2014-08-19 19:59:21 · 1076 阅读 · 2 评论 -
HDU 4902 Nice boat 线段树+离线
据说暴力也过了,还傻逼地写了这么长。。。#include #include #include #include using namespace std;#define ll long long#define L(x) (x<<1)#define R(x) (x<<1|1)#define Val(x) tree[x].val#define Lazy(x) tree[x].laz原创 2014-07-31 18:42:45 · 1432 阅读 · 1 评论 -
HDU 4362 Dragon Ball 线段树
#include #include #include #include #include #include #include #include #include #include using namespace std;#define lson l, mid, rt << 1#define rson mid + 1, r, rt << 1 | 1typedef __int原创 2014-09-28 19:05:28 · 1287 阅读 · 0 评论 -
HDU 5052 Yaoge’s maximum profit 裸树链剖分 2014 ACM/ICPC Asia Regional Shanghai Online
题意:给定n个点的带点权树。下面n行给出每个点点权表示每个点买卖鸡腿的价格下面n-1行给出树边下面Q个操作Q行u, v, val从u走到v,过程中可以买一个鸡腿,然后到后面卖掉,输出max(0, 最大的收益)然后给[u,v]路径上点点权+=val思路:树链剖分裸题屌丝题解:点击打开链接#pragma comment(linker, "/STA原创 2014-09-28 16:57:45 · 1689 阅读 · 0 评论 -
HDU 5371 Hotaru's problem Manacher+线段树
链接题解来源:点击打开链接给出一个n长的序列要求序列中最长的子串使得子串满足ABA的形式B = reverse(A) , 就是A的翻转。如 1 1 1, 12 21 12, 321 123 321问:最长的长度是多少思路:因为AB就是一个偶数长度的回文,所以显然是先跑一个Manacher 如:1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9原创 2015-08-12 16:18:40 · 1170 阅读 · 0 评论 -
codeforces 339D Xenia and Bit Operations 线段树
题目链接 题意: 给定n,下面2^n个数。 第一次 把 a1|a2, a3|a4, 如此得到一个 2^(n-1)个数的序列。 再把这个序列 a1^a2, a3^a4 , 得到一个2^(n-2) 个数的序列 再进行 a1|a2, a3|a4 ··· 直到只剩下一个数v, 我们称v是这个2^n 序列的权值。下面m个询问: 询问格式: p, b 表示 a[p] = b; 再输出此时序列的权值原创 2015-07-09 12:59:17 · 1294 阅读 · 0 评论 -
HDU 5338 ZZX AND PERMUTATIONS 线段树
链接多校题解胡搞。。。题意太难懂了。。ZZX and PermutationsTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 310 Accepted Submission(s):原创 2015-07-31 00:05:15 · 1809 阅读 · 0 评论 -
HDU 5316 Magician 线段树
链接MagicianProblem DescriptionFantasy magicians usually gain their ability through one of three usual methods: possessing it as an innate talent, gaining it through study and practice, or r原创 2015-07-28 19:49:30 · 1289 阅读 · 0 评论 -
codeforces 558E A Simple Task 线段树
题目链接题意较为简单。思路:因为只有26个字母,所以用26棵线段树维护就好了,比较容易。#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace st原创 2015-07-15 19:31:00 · 1654 阅读 · 0 评论 -
Codeforces 528B Clique Problem dp+线段树(or 树状数组)
题目链接:点击打开链接题意:给定数轴上的n个点。下面n行每行两个数 xi, wi 表示点和点权。对于任意两个点u, v若dis(u,v) >= u_w+v_w 则这两个点间可以建一条边。(in other words 若两点间距离大于两点的权值和则可以建边)找一个最大团,输出这个最大团的点数。其实对于一个权值点我们可以认为是一个区间如: 4 5 ,可以认为是区间[-原创 2015-03-18 16:19:09 · 1470 阅读 · 0 评论 -
CSU 1532 JuQueen 线段树 lazy 区间最值
题目链接:点击打开链接题意:第一行给出C, n, Q开始有一个编号[0, C) 的全0序列。下面Q行操作status id (询问下标为id的值)groupchange [l, r] val 把区间[l,r] 每次+1(或-1)val次,当区间中某一个点达到0或n时则操作停止,输出实际+1(或-1)的值change id val 同上,只是单点操作。思路:原创 2015-03-28 09:46:24 · 1437 阅读 · 0 评论 -
URAL 2014 Zhenya moves from parents 线段树
题目链接:点击打开链接题意:给定一张银行卡的n条记录:val day.mon hour:min表示这张卡在这个时间有一条交易。输出n行,对于输出的第i行表示:根据前i件记录,可以推测出这张卡的最大透支额度是多少。即:把前i个记录按时间排个序,跑一遍,输出过程中的最小值。思路:我们可以认为前i-1个事件已经有序,并且每个事件都有个过程最小值。1、当插入第i个事件时原创 2014-12-09 15:20:01 · 1600 阅读 · 0 评论 -
HDU 4391 Paint The Wall 线段树(水
题意:给定n长的数组,m个操作下面是每个点的颜色下面m个操纵:1 l r col 染色2 l r col 询问区间内为col颜色的点数== 就是普通的操作+区间内最大最小颜色数的优化,感觉很不科学。。。==感觉可以卡掉这种写法。。反正就是不科学嘛 #include #include #include #include #include原创 2014-10-21 23:45:36 · 1448 阅读 · 0 评论 -
Codeforces 482B Interesting Array 构造+线段树判可行
题目链接:点击打开链接题意:构造一个n长的序列,m个限制:每个限制[l, r] q序列要满足 区间[l,r]的所有数 & 起来结果是q思路:直接构造,然后判可行就好了。。#include #include #include #include template inline bool rd(T &ret) { char c; int sg原创 2014-10-25 22:41:27 · 1418 阅读 · 0 评论 -
Codeforces 474E Pillars dp+线段树(水
题目链接:点击打开链接给定n d下面n座山的高度。任选一座山原创 2014-10-07 15:31:23 · 1319 阅读 · 0 评论 -
HDU 4125 Moles 线段树+KMP
题意:给定n,下面是1-n的排列。下面一个二进制子串。先按给定的排列建出二叉树。然后遍历树(根->左子树->根->右子树->根)遍历这个节点时 若权值为奇数入栈一个1,若为偶数入栈一个0得到一个母串。问母串中出现了几次子串。思路:先是建树得到母串,然后求子串个数就是裸的KMP。建树就是找个规律,然后用线段树维护一下输入的排列#include #原创 2014-11-09 14:38:57 · 1922 阅读 · 0 评论 -
POJ 1151 Atlantis 求矩阵面积并 扫描线 详解
题意:给定n个矩阵的左下角和右上角坐标,求矩阵面积并(矩阵总是正放的,即与x轴y轴都平行)思路:扫描线裸题http://www.cnblogs.com/fenshen371/p/3214092.html对于一个矩阵,我们只关心他的上下底边。线段树维护的是当前有哪些区间是被线段覆盖的(即被线段覆盖的区间长度)我们从上往下扫,则对于任意一条(如15,10) 我们会计算(2原创 2014-05-02 09:53:06 · 2498 阅读 · 1 评论 -
Codeforces 343D Water Tree dfs序+线段树
题目链接:http://codeforces.com/contest/343/problem/D题意:给定一棵树(给定图一定是树)1、把v点及其子树灌上水2、把v点及v到根的路径去掉水3、询问v点是否有水思路:dfs序(不是欧拉序列)把树转成dfs_clock那么对于点v 出现的时间in[v]和消失的时间out[v] ,一定会把v子树下所有节点都夹在[ in[v], o原创 2014-06-21 11:23:05 · 1232 阅读 · 0 评论 -
CF 19D 线段树+set压缩坐标轴+离散化map
题意:n个操作,在200000*200000的平面上加删点find 严格在坐标右上角,x最小,再y最小的点 线段树做,区间为离散化后的 X轴坐标 ,维护区间点数 和 最小的 y 值 ( 维护最小y值是重要优化 )#include #include #include #include #include #include #define N 201000原创 2013-10-08 18:34:15 · 1669 阅读 · 0 评论 -
Uva 12299 线段树求区间最小值(RMQ) 区间查询单点更新
n个点 m个操作shift(a,b,c···) 表示把a位置的数字放在最后,其他位置的数字向前移动 这里shift直接视为修改单点数据没有太多trap, 注意向上更新时 只有非叶子节点才允许此操作线段树裸题:#include #include #include #include #include #define N 101000#define ll原创 2013-10-05 18:23:52 · 2074 阅读 · 0 评论 -
HDU 4521 间隔》=1的LIS 线段树+dp
题意:n个数 d个距离下面n个数的序列,求序列中的最长单调递增子序列,保证子序列的每个元素相距要>d (普通的LIS d=0 ) #include #include #include #include #include #define N 101000#define ll int#define LL(x) (x<<1)#define RR(x) (原创 2013-09-24 21:42:07 · 2173 阅读 · 0 评论 -
HDU 3308 线段树 最长连续上升子序列 单点更新 区间查询
题意:T个测试数据n个数 q个查询n个数 ( 下标从0开始)Q u v 查询 [u, v ] 区间最长连续上升子序列 U u v 把u位置改成v #include#include#include#includeusing namespace std;#define N 101010#define L(x) (x<<1)#define R(x)原创 2013-10-10 17:49:02 · 2076 阅读 · 0 评论 -
POJ 2528 离散化+线段树染色
题意:T个测试数据n个操作i.th line [u, v] 表示给区间 [u,v] 染上i色 问最后有几种颜色区间范围很大,所以先离散化注意区间更新的操作 #include #include #include #include #include #include #define N 10100*2#define ll int#de原创 2013-09-25 20:05:37 · 2031 阅读 · 0 评论 -
POJ 2828 线段树 单点更新,单点查询
题意:n个人n行:a,b 表示b这个人插队插在a位置问最后队伍的顺序思路:从最后一个人开始,插队过程表示为:把b放在第a个空位的位置 #include #include #include #include #include #define N 201000#define M 2000100#define inf64 0x7ffffff原创 2013-09-24 13:20:26 · 2110 阅读 · 0 评论 -
HDU 2795 线段树(单点更新 区间查询)
复制个题意:题意,给你一个h*w的广告版,往上面贴1*wi的广告,求能够贴上且位置最上,最左的行hi;解法:每次需找长度>=wi的最上最左位置,然后该位置长度-wi;线段树data[]存放每个高度现有的宽度,区间找最大值,单点更新。 #include #include #include #include #include #define N 2010原创 2013-09-23 20:09:07 · 1860 阅读 · 0 评论 -
UESTC 1425 求任意区间的LIS 线段树区间更新区间查询
DescriptionFor a sequence S1,S2,...,SN, and a pair of integers (i, j), if 1 i i+1 i+2 j-1 j, then the sequence Si,Si+1,...,Sj is a CIS (Continuous Increasing Subsequence). The longest CIS of a s原创 2013-09-24 15:14:31 · 2821 阅读 · 0 评论 -
HDU 3911 线段树区间染色 区间查询
题意:n个点下面表示每个点的值(0或1)m个操作oper [u,v] oper==1表示把区间所有值异或一下, ==0 表示询问区间上 连续为1的最长长度 用 #include#include#include#include#include#include#include #include #include #原创 2013-09-27 20:35:55 · 2138 阅读 · 0 评论 -
HDU 3397 线段树区间染色 区间查询
题意:t个测试数据n 个数 m个操作下面n个数的当前颜色(只有 0 1 两种 )oper [u,v] oper==0 区间染0色oper==1 区间染1色oper==2 区间反色oper==3 问区间1色个数oper==4 问区间 连续1色个数代码写搓了: #include #include #include #includ原创 2013-10-01 19:29:08 · 2006 阅读 · 0 评论 -
线段树题集
同样分成四类,不好归到前四类的都分到了其他。树状数组能做,线段树都能做(如果是内存限制例外),所以也有些树状数组的题目,会标示出来,并且放到其他类里。一、单点更新 1.hdu1166 敌兵布阵:有N个兵营,每个兵营都给出了人数ai(下标从1开始),有四种命令,(1)”Addij",表示第i个营地增加j人。(2)“Sub i j”,表示第i个营地减少j人。(3)“Query转载 2013-09-16 11:48:24 · 4105 阅读 · 0 评论