E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
单点更新
hdu3911线段树区间合并操作
线段树题目的类型大致可以分为四种:
单点更新
、成段增减或更新、区间合并和扫描线成段更新和区间合并都需要用到Lazy思想。扫描线就是求矩形面积和周长的题目,需要用到离散化。
xkey
·
2011-11-05 15:31
数据结构
HDU解题报告
hdu3911线段树区间合并操作
线段树题目的类型大致可以分为四种:
单点更新
、成段增减或更新、区间合并和扫描线成段更新和区间合并都需要用到Lazy思想。扫描线就是求矩形面积和周长的题目,需要用到离散化。
Acceptedxukai
·
2011-11-05 15:00
c
struct
tree
query
Build
(
单点更新
)
题意:模拟约瑟夫环。有N(1 #include #include #include usingnamespacestd; #defineLL(x)(x>1)) constintN=500005; structnode { intlft,rht,valu; intmid(){returnMID(lft,rht);} }; inty[N],step[N],n,K; charname[N][15]
shiqi_614
·
2011-10-07 19:00
struct
tree
ini
Build
HDU 2795 Billboard [线段树-
单点更新
]
题意:有一个广告牌,长是h宽为w。现在要在上面贴纸条做广告,每个纸条都是单位长度h=1,但是w宽不一致,要求尽可能的往顶头贴,再尽可能的往左边贴,求给出给定的纸条能贴在广告牌的第几行分析:每一行看作一个点,父节点记录最大还能插入的纸条//ACCODE:#include #include #include #include #include #include #include #include u
lmyclever
·
2011-10-06 17:00
query
Build
HDU1394 Minimum Inversion Number [暴力] [线段树-
单点更新
]
题意:分析://ACCODE(暴力):#include #include usingnamespacestd; intsec[5010]; intmain() { intn,i,j,sum,Min; while(scanf("%d",&n)!=EOF) { sum=0; for(i=0;i=0;j--) { if(sec[j]>sec[i]) sum++; } } Min=sum; for(i=0
lmyclever
·
2011-10-05 20:00
query
ini
Build
HDU 1754 I Hate It [线段树-
单点更新
]
题意:分析:/* 线段树一般也就两种写法: 1、传统递归建树的开2N-1即可。 2、按照堆结构非递归建树,要开2^([logN]+1),[]表示取上整。 至于为什么有一说要开4N,其实这也是上述第二种情况,因为2^([logN]+1)在最坏情况下接近4N。 比如N=1024时只用开2048,而N=1025时却需要开4096个节点,为3.99N。 但在大多数情况下远达不到4N,所以建议还是手动计算出
lmyclever
·
2011-10-05 16:00
HDU 1166 敌兵布阵 [线段树-
单点更新
]
题意:分析://ACCODE:#include #include #include #defineMAXSIZE300000 #defineBUF_SIZE50 #defineL0 #defineR1 #defineSUM2 longseg[MAXSIZE][3]; voidbuild(longr,longx1,longx2) { seg[r][L]=x1; seg[r][R]=x2; seg
lmyclever
·
2011-10-04 11:00
hdu 1540 Tunnel Warfare(
单点更新
,区间合并)
题意:给你n连成一条线的点,m个操作。Dx把第x个村庄破坏,Qx查询与第x个村庄直接和间接相连的村庄数目(包括它自己),R把最早破坏的一个村庄恢复。 除了下面的另一种方法外,现在再做的时候,想到了另一种方法,在查询的时候,更新查找到的范围的左右端点。/*代码风格更新后*/ #include #include #include #include usingnamespacestd; #def
shiqi_614
·
2011-09-25 21:00
struct
tree
cmd
query
Build
hdu 3308 LCIS(
单点更新
,区间合并)
题意:给你n个整数,有两种操作,UAB把第A个数变成B,QAB查询区间[A,B]的最长连续上升序列。 在线段树的节点里保留了端点的值即lval,rval。同时维护左端点最长的上长序列的长度lmx,右端点的最长的下降序列的长度rmx,以及这个区间的最长上升序列的长度mx。在合并区间的时候,如果当前区间的左儿子的lmx等于左儿子的区间长度,那么当前区间的lmx还要加上右儿子的lmx。维护当前区
shiqi_614
·
2011-09-25 19:00
struct
tree
cmd
query
ini
Build
POJ 2828 Buy Tickets(
单点更新
)
题意:有n个的排队,每一个人都有一个val来对应,每一个后来人都会插入当前队伍的某一个位置pos。要求把队伍最后的状态输出。逆向思维。我们可以这样考虑,最后一个人一定会得到当前队伍他想要的位置,如果我们往前一个阶段,倒数第二个人也一定能得到他想要的位置……,也就是说,我们可以这样处理,我们把最后一个人插入,然后忽略它,再把倒数第二个人插入。即,我们找出当前队伍他想要插入的位置pos的真正坐标就可以
shiqi_614
·
2011-09-24 22:00
struct
tree
query
ini
Build
HDOJ 1394 Minimum Inversion Number
类型:
单点更新
,树状数组/线段树代码(树状数组):#include #include usingnamespacestd; #defineMAXN5002 #defineINF10) { ret+=c
tclh123
·
2011-09-19 22:00
HDOJ 1166 敌兵布阵
全裸的
单点更新
....代码:#include #include #include usingnamespacestd; #defineMAXN50002 structnode { intmid,l,r
tclh123
·
2011-09-19 22:00
HDOJ 1754 I Hate It
类型:
单点更新
,线段树/树状数组代码:#include #include #include usingnamespacestd; inlineintRint(){intx;scanf("%d",&x);
tclh123
·
2011-09-19 22:00
hdu 4027 Can you answer these queries? The 36th ACM/ICPC Asia Regional Shanghai Site
ICPCAsiaRegionalShanghaiSite——OnlineContestThe36thACM/ICPCAsiaRegionalShanghaiSite——OnlineContest比赛的时候知道必须成段更新但是没有想到怎么更新,于是就
单点更新
了
IAccepted
·
2011-09-14 17:00
struct
tree
query
Build
hdu 2795 Billboard(
单点更新
)
题意:有一块板,规格为h*w,然后有n张海报,每张海报的规格为1*wi,选择贴海报的位置是:尽量高,同一高度,选择尽量靠左的地方。要求输出每张海报的高度位置。因为最多只有二十万张海报,所以板的最大的长度不会超过二十万,但是要小心,如果板的长度小于h,我们还要用h来建树。起初在查询的时候并不直接去更新它,而是查询找出它的更新位置的后,再写个updata函数去更新,但是我们可以在查询到它的位置的时候,
shiqi_614
·
2011-08-27 02:00
struct
tree
query
ini
Build
hdu 1394 Minimum Inversion Number(
单点更新
)
题意:主要是利用线段树求逆序树,建的是一棵空树,然后每插入一个点之前,统计大于这个数的有多少个,直到所有的数都插入完成,就结果了逆序树的统计。要得出答案主要是利用了一个结论,如果是0到n的排列,那么如果把第一个数放到最后,对于这个数列,逆序数是减少y[i],而增加n-1-y[i]的。(可以这样想,因为是第一个数,所有的数都在它后面,那么在当前位置pos比它大的数也在它后面,那么第一个数调到后面之后
shiqi_614
·
2011-08-27 02:00
线段树初步理解...
原本这两天在搞网络流的....但最近几次网赛多次遇到了线段树的题目...意识到线段树还是重要的...所以今天就初步的了解了线段树最简单的应用...
单点更新
...今天学习线段树主要是看NotOnlySuccess
kk303
·
2011-08-20 22:00
hdu 2795 Billboard
本题还是线段树
单点更新
的题目。题目链接:http://acm.hdu.edu.cn/showproblem.php?
IAccepted
·
2011-08-20 14:00
query
Build
hdu 1754 I Hate It
也是属于线段树
单点更新
类型的题目。总体比较简单,很容易看懂。题目链接:http://acm.hdu.edu.cn/showproblem.php?
IAccepted
·
2011-08-20 14:00
query
Build
hdu 1166 敌兵布阵
这是一道线段树里最简单的一类题目了,
单点更新
类型!题目链接:http://acm.hdu.edu.cn/showproblem.php?
IAccepted
·
2011-08-20 14:00
query
Build
hdu 1754 I Hate It(
单点更新
)
有两种操作,更新某个人的成绩,查询区间里的最大值。直接更新到叶子结点,在线段树的每个结点里保留一个mx表示这个区间[lft,rht]里的最大值,每次从叶子结点里更新回来记得更新路径上的mx。/*代码风格更新后*/ #include #include #include usingnamespacestd; #defineLL(x)(x>1)) #defineINF(1mid)mx2=query(s
shiqi_614
·
2011-08-19 01:00
struct
tree
cmd
query
Build
hdu 1166 敌兵布阵(
单点更新
)
hdu1166敌兵布阵(基本操作)有三种操作:询问区间总和,增加某个兵营的兵的数目,减少某个兵营的兵的数目。实际上也只有两个。在更新的时候,每到一个区间就把当前区间的sum增加对应的数目,到达叶子结点是返回。这样就可以不会回溯去更新父亲结点的值。查询的时候,如果区间完全匹配,直接返回区间的sum值,否则向下寻找,直到完全匹配,然后返回它们的和就可以。这时候,结果里保存的边界是它们真正的边界。/*更
shiqi_614
·
2011-08-19 01:00
struct
tree
query
Build
线段树系列之----
单点更新
,区间最大(HDU 1754)
线段树系列之----
单点更新
,区间最大(HDU1754)//回忆系列.. 1//segment tree template 2#include 3 4using namespace std;
xiaoguozi's Blog
·
2009-03-08 15:00
上一页
12
13
14
15
16
17
18
19
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他