树 - 线段树
文章平均质量分 78
NotFound1
这个作者很懒,什么都没留下…
展开
-
|poj 2528|线段树|Mayor's posters
poj传送门 线段树离散化区间后区间染色,注意染区间不是点#include<cstdio> #include<algorithm> #include<cstring> #include<vector> #define ms(i,j) memset(i,j, sizeof i); using namespace std; const int MAXN = 10000 + 5; cons原创 2017-02-09 23:46:55 · 361 阅读 · 0 评论 -
|poj 2299|权值线段树|Ultra-QuickSort
poj 2299 注意开long long 权值线段树就是线段树每个节点存每个权值出现的次数,本题求逆序对应该算一个比较简单的权值线段树,注意离散化#include<cstdio> #include<cstring> #include<algorithm> #include<vector> #include<queue> using namespace std; #define ms(i, j)原创 2017-06-10 16:10:53 · 453 阅读 · 0 评论 -
|BZOJ 3531|树链剖分|动态开点线段树|[Sdoi2014]旅行
BZOJ 3531树剖以后每个宗教建立一棵线段树,节点太多用传统方法开数组肯定不行,这里进行改进,使用了动态开点线段树,即需要这个点再开这个点。#include<cstdio> #include<cstring> #include<algorithm> #include<vector> #define ms(i, j) memset(i, j, sizeof i) #define ll long l原创 2017-06-06 18:46:24 · 490 阅读 · 2 评论 -
|BZOJ 4196|树链剖分|线段树|[Noi2015]软件包管理器
BZOJ 4196树链剖分支持修改查找子树和到根的路径权值和即可解决,注意pushdown放前面注意lc,rc会爆的情况#include<cstdio> #include<cstring> #include<algorithm> #define fo(i, j, k) for (i=(j);i<=(k);i++) #define fd(i, k, j) for (i=(k);i>=(j);i--)原创 2017-05-20 20:43:48 · 388 阅读 · 0 评论 -
|BZOJ 4034|树链剖分|线段树|[HAOI2015]树上操作
BZOJ 4034树剖后线段树维护。 此题要修改子树的权,根据树剖性质子树是连续的一段,运用时间戳思想即可。注意开long long,第一次没开就WA了(痛不欲生)#include<cstdio> #include<cstring> #include<algorithm> #define fo(i, j, k) for (i=(j);i<=(k);i++) #define fd(i, k, j)原创 2017-05-19 20:28:22 · 431 阅读 · 0 评论 -
|poj 3237|树链剖分|线段树|Tree
poj 3237树剖+线段树。 刚开始想用记录该区域被NEGATE了几次,结果发现不可行,翻别人博客发现了原来维护最大值maxvmaxv和最小值minvminv,NEGATE就是maxv=−minv,minv=maxvmaxv=-minv, minv=maxv, 正确性显然。 #include<cstdio> #include<cstring> #include<algorithm> #defin原创 2017-05-18 21:00:19 · 393 阅读 · 0 评论 -
|hdu 3966|树链剖分|线段树|Aragorn's Story
hdu 3966裸树剖+线段树维护,while写成if, 数组开小搞得我调试了好久。。静态查错真的不能快了#pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #include<cstring> #include<algorithm> #define fo(i, j, k) for (i=(j);i<=(原创 2017-05-18 18:44:24 · 380 阅读 · 0 评论 -
|poj 2763|LCA, 树状数组|或者|树链剖分, 线段树|Housewife Wind
poj 2763LCA+树状数组/线段树。首先本题大致一看就是一个LCA,但是本题有操作更改某边的权,这样会使得原本的far数组变化,不难发现,更改边权后影响该边下面所有点的答案。此时可以在LCA的DFS预处理时求出DFS序列(即时间戳),找到每个点管辖的范围,修改边权相当于修改该边连接的两个点深度深的那个点所管辖的范围,此时修改可以用暴力,但是由于far数组与LCA本身查询无关,我们可以用数据结构原创 2017-05-09 20:12:07 · 655 阅读 · 0 评论 -
|BZOJ 1036|树链剖分|线段树|[ZJOI2008]树的统计Count
bzoj 1036树剖+线段树。第一个树剖题,终于AC#include<cstdio> #include<cstring> #include<algorithm> #include<vector> #define fo(i, j, k) for (i=(j);i<=(k);i++) #define fd(i, k, j) for (i=(k);i>=(j);i--) #define rd(a) sc原创 2017-05-15 19:53:53 · 371 阅读 · 0 评论 -
|BZOJ 1593|线段树|Hotel 旅馆
http://www.lydsy.com/JudgeOnline/problem.php?id=1593 luogu免权限地址:https://www.luogu.org/problem/show?pid=2894 线段树记录4个信息: lm: 左端点开始最长连续空区间 rm: 右端点开始最长连续空区间 sum:整个区间最长连续空区间 lazy:lazy标记 (-1:没有标记 0:空原创 2017-01-26 11:24:54 · 584 阅读 · 0 评论 -
|算法讨论|线段树1(大白书版本) 学习笔记
常用方法: 1、点修改,区间查询 2、区间增加,区间查询 3、区间修改,区间查询 4、混合多种修改,区间查询 1、点修改,区间查询 input: 10 6 5 4 8 9 7 2 4 1 5 7 1 1 10 0 8 6 1 1 10 1 2 5 0 4 -8 1 1 5 //n m //n个数,表示线段树节点的初始值 //m行,每行一个指令 //0 p v,修改p节点为v /原创 2017-01-22 15:27:09 · 482 阅读 · 0 评论 -
|BZOJ 1012|线段树|[JSOI2008]最大数maxnumber
BZOJ传送门 水题一道,线段树维护即可。(省选题出模板?)#include<cstdio> #include<algorithm> #include<cstring> #include<vector> #define ms(i,j) memset(i,j, sizeof i); using namespace std; const int MAXM = 200000+5; int m原创 2017-02-11 22:03:27 · 540 阅读 · 0 评论 -
|Hdu 1828|线段树|Picture
Hdu传送门 线段树扫描线求周长并,看这篇好文学习: http://blog.csdn.net/tomorrowtodie/article/details/52048323#include<cstdio> #include<algorithm> #include<cstring> #include<vector> #define ms(i,j) memset(i,j, sizeof原创 2017-02-11 00:02:41 · 447 阅读 · 0 评论 -
|Hdu 1542|线段树|Atlantis
Hdu传送门 线段树离散化以后进行扫描线。 http://www.cnblogs.com/scau20110726/archive/2013/03/21/2972808.html 这篇文章讲得很好,详解看以上网站#include<cstdio> #include<algorithm> #include<cstring> #include<vector> #define ms(i,j原创 2017-02-10 18:06:20 · 460 阅读 · 0 评论 -
|算法讨论|线段树2 学习笔记
题目 [线段树]BZOJ 1012:裸线段树单点修改+区间求最大值 [线段树]BZOJ 1593:线段树合并模型 [线段树]poj 2528:线段树离散+区间染色模型 [线段树]Hdu 1542:线段树离散化+扫描线求面积并模型 [线段树]Hdu 1828:线段树扫描线求周长并模型模板及讲解知识点: 1、单点修改 2、区间修改 3、离散化 4、扫描线求周长并 5、扫描线求面积并原创 2017-03-11 16:26:48 · 421 阅读 · 0 评论