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
BZOJ3110
bzoj3110
(线段树套线段树、树状数组套线段树)
http://www.lydsy.com/JudgeOnline/problem.php?id=3110题意:有N个位置,M个操作。操作有两种,每次操作如果是1abc的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2abc形式,表示询问从第a个位置到第b个位置,第C大的数是多少。tip:线段树套线段树,外面是权值,每个节点上的线段树是位置,比如,如果在1~4位置加入5就是把整个线段树
zjy2015302395
·
2020-08-04 22:32
acm
基本算法
[ZJOI 2013]
bzoj3110
K大数查询 (整体二分)
昨天晚上写了一道最裸的cdq分治的题陌上花开,自己做出来的,感觉又有了一定的领悟。感觉其实cdq分治就相当于主席树的用处,主席树又叫函数式线段树,顾名思义可以拿来当一个函数用,相当于建出来之后就一劳永逸了,来一个询问解决一个。但是有些题目并不要求在线,所以并不需要把一整个主席树都建出来,而是每次都在线地去找它的前缀,然后cdq分治保证了每个点都有不超过logn个前缀,并且在计算i的时候它的前缀已经
broxin
·
2020-07-05 16:29
cdq分治
题解
[
BZOJ3110
][ZJOI2013]K大数查询 树套树/CDQ分治
树套树做法:注意到权值很小,于是外层开权值线段树,内层是一个动态开点的区间线段树,维护权值在[L,R],位置在[l,r]的数一共有多少个。修改就是内层的一个线段树上区间加一。查询时,外层线段树中先判断左子树中够不够k个数,若够则往左子树递归,不够就减一下后往右子树。代码(MLE):#include#includeusingnamespacestd;intn,m;structtree1{intsum
DOFYPXY
·
2017-12-03 17:56
数据结构
CDQ分治
树状数组
树套树
bzoj3110
zjoi2013 K大数查询
Description有N个位置,M个操作。操作有两种,每次操作如果是1abc的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2abc形式,表示询问从第a个位置到第b个位置,第C大的数是多少。Input第一行N,M接下来M行,每行形如1abc或2abcOutput输出每个询问的结果SampleInput2511211122211221112123SampleOutput121HINT
wfj_2048
·
2017-01-20 10:51
整体二分
[ZJOI 2013]
bzoj3110
K大数查询 【树套树】
Description有N个位置,M个操作。操作有两种,每次操作如果是1abc的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2abc形式,表示询问从第a个位置到第b个位置,第C大的数是多少。Input第一行N,M接下来M行,每行形如1abc或2abcOutput输出每个询问的结果SampleInput2511211122211221112123SampleOutput121HINT
真·skysys
·
2016-09-26 17:14
+—-Data
structure--+
+Tree
BZOJ3110
JZOI2013 K大数查询 线段树套线段树
权值线段树套区间线段树外层的权值线段树中每个节点如果维护[L,R]这个区间,那么该节点所对应的线段树维护的就是[L,R]这些数在每个区间里出现了几次,也就是说如果外层线段树的某个节点维护[L,R],其所对应的内层线段树中某个节点[l,r]维护的值就是[L,R]这些数在[l,r]这个区间中出现的次数。最后吐槽一下动态内存+指针版线段树MLE……尼玛我写指针版完全习惯了根本就不会写数组版了QAQ,自己
WDZRMPCBIT
·
2016-05-10 23:00
【
BZOJ3110
】【codevs1616】K大数查询,权值线段树套普通线段树
Time:2016.05.09Author:xiaoyimi转载注明出处谢谢传送门1传送门2思路:之前没怎么接触过权值线段树(非主席树),这次就当学习了一下吧。一开始还把题意理解错了,我的天啊……起初思考了好久,发现不知道怎么处理负数的情况,不过数据里并没有负数?权值线段树的每个节点表示一个区间[L,R],存储原序列中权值为[L,R]的元素的信息,所以这里的权值线段树每个节点上都是一棵普通线段树,
xym_CSDN
·
2016-05-09 13:00
[
BZOJ3110
][Zjoi2013]K大数查询(主席数套线段树 )
题目描述传送门题解外层权值线段树,权值线段树的每一个位置都是一棵线段树,线段树用动态开点。注意pushdown或者查询的时候还有可能要继续开点。注意最顶端的点的权有可能是炸了int了,因为有可能加入了50000^2个点。代码#include #include #include #include usingnamespacestd; #defineLLlonglong constintmax_n=
Clove_unique
·
2016-04-28 09:00
线段树
bzoj
主席树
【
bzoj3110
】[Zjoi2013]K大数查询 权值线段树套区间线段树
权值线段树套区间线段树外层线段树按照完全二叉树的建法全部建出内层线段树动态开点外层的每个节点上都建一棵区间线段树,维护权值在[l,r]中每个区间出现的个数每次修改对应外层线段树上的O(logn)个节点,内层修改一个区间,对应内层线段树上的O(logn)个节点所以,一次修改会修改O(log^2n)个节点#include #include #include #include #include #inc
u012288458
·
2016-04-13 10:00
bzoj3110
K大数查询 整体二分&树状数组
本来想用树状数组套树状数组去做的。然后发现树状数组还要动态开点。。就放弃了。然后扒了扒题解发现有整体二分啊。就自己脑补了一下。 首先,由于数有负的,但是绝对值 #include #definelllonglong #defineN100005 usingnamespacestd; intn,m,tot,ans[N];llc[2][N];boolbo[N];structnode{in
lych_cys
·
2016-03-10 19:00
分治
树状数组
整体二分
bzoj3110
【ZJOI2013】K大数查询
3110:[Zjoi2013]K大数查询TimeLimit: 20Sec MemoryLimit: 512MBSubmit: 3208 Solved: 1361[Submit][Status][Discuss]Description有N个位置,M个操作。操作有两种,每次操作如果是1abc的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2abc形式,表示询问从第a个位置到第b个位置
AaronGZK
·
2016-02-28 22:00
线段树
二分
bzoj
树套树
bzoj3110
【ZJOI2013】K大数查询
3110:[Zjoi2013]K大数查询TimeLimit: 20Sec MemoryLimit: 512MBSubmit: 3208 Solved: 1361[Submit][Status][Discuss]Description有N个位置,M个操作。操作有两种,每次操作如果是1abc的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2abc形式,表示询问从第a个位置到第b个位置
AaronGZK
·
2016-02-28 22:00
线段树
二分
bzoj
树套树
[
bzoj3110
]K大数查询
题目大意现在有N个盒子,初始为空。有M个操作,每个操作要么为编号范围在l~r的盒子都放入一个球上面的数为a,要么是询问编号范围在l~r的盒子所有球上的数的第k大值。n,mr的有多少个。然后我们按顺序扫描操作。先记mid=(l+r)/2对于插入操作,如果其插入的球数值>mid那么我们将对应区间加1(用线段树维护区间内mid+1~r的球个数)。然后根据其数值让其进入l~mid或mid+1~r。对于询问
WerKeyTom_FTD
·
2016-02-24 18:00
【
BZOJ3110
】【ZJOI2013】K大数查询
3110:[Zjoi2013]K大数查询TimeLimit:20SecMemoryLimit:512MBDescription有N个位置,M个操作。操作有两种,每次操作如果是1abc的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2abc形式,表示询问从第a个位置到第b个位置,第C大的数是多少。Input第一行N,M接下来M行,每行形如1abc或2abcOutput输出每个询问的结果
_傲寒
·
2016-02-10 21:41
[
BZOJ3110
][Zjoi2013]K大数查询
[Zjoi2013]K大数查询Description有N个位置,M个操作。操作有两种,每次操作如果是1abc的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2abc形式,表示询问从第a个位置到第b个位置,第C大的数是多少。Input第一行N,M接下来M行,每行形如1abc或2abcOutput输出每个询问的结果SampleInput2511211122211221112123Samp
hbhcy98
·
2016-02-03 12:00
树套树
[ZJOI 2013]
bzoj3110
K大数查询 (整体二分)
昨天晚上写了一道最裸的cdq分治的题陌上花开,自己做出来的,感觉又有了一定的领悟。感觉其实cdq分治就相当于主席树的用处,主席树又叫函数式线段树,顾名思义可以拿来当一个函数用,相当于建出来之后就一劳永逸了,来一个询问解决一个。但是有些题目并不要求在线,所以并不需要把一整个主席树都建出来,而是每次都在线地去找它的前缀,然后cdq分治保证了每个点都有不超过logn个前缀,并且在计算i的时候它的前缀已经
u011542204
·
2016-01-23 12:00
bzoj3110
: [Zjoi2013]K大数查询 【cdq分治&树套树】
模板题,折腾了许久。cqd分治整体二分,感觉像是把询问分到答案上。1#include 2#definerep(i,a,b)for(inti=a;i=b;i--) 4#defineREP(i,a,b)for(inti=a;ipii; 13constintinf=~0U>>1; 14consti64INF=~0ULL>>1; 15templatevoidMax(T&a,T&b){if(avo
y7070
·
2015-12-23 12:00
【
BZOJ3110
】【整体二分+树状数组区间修改/线段树】K大数查询
Description 有N个位置,M个操作。操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c 如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少。 Input 第一行N,M 接下来M行,每行形如1 a b c或2 a b c Output 输出每个询问的结果 Sample Input 2 5 1 1
·
2015-11-11 19:23
树状数组
[
bzoj3110
][Zjoi2013]K大数查询
好题! 法1:看到题目,首先想到的便是树套树。按照一般想法,第一维是区间,第二维权值,不好想(至少我不会。。。据说有人这么干,orz) 如果反过来,做法就十分清晰了。对于区间[l,r],将权值在此之内的修改建立一棵普通线段树。这样对于一个询问,就可以类似二分答案,首先看权值在[1,mid]中有几个在询问的区间中,如果<排名,就往右,否则往左。 /*******************
·
2015-10-31 10:55
ZOJ
ZJOI2013K大数查询
bzoj3110
树套树,写的太弱了15s才过,不断维护就好啦,权值套区间,似乎我的常熟很渣……后来才发现本题数据是没有负数的嗯嗯喵,学长说:T_T省选第一题辣么简单还用讲?其实是几天前在JZOJ上面交过了……然后去刷了下BZOJ……#include#include#include#include#include#defineLLlonglongusingnamespacestd;LLread(){intx=0,f
BPM136
·
2015-08-27 13:13
树套树
ZJOI2013K大数查询
bzoj3110
树套树,写的太弱了15s才过,不断维护就好啦,权值套区间,似乎我的常熟很渣……后来才发现本题数据是没有负数的嗯嗯喵,学长说:T_T省选第一题辣么简单还用讲?其实是几天前在JZOJ上面交过了……然后去刷了下BZOJ……#include #include #include #include #include #defineLLlonglong usingnamespacestd; LLread() {
BPM136
·
2015-08-27 13:00
树套树
BZOJ3110
【线段树】
写的是区间线段树套权值线段树.似乎比反过来写要麻烦.SAD.为了节省内存.内层的线段树要动态开点./*Iwillwaitforyou*/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #def
Lethelody
·
2015-07-12 11:00
【整体二分】[ZJOI 2013]
bzoj3110
K大数查询
题目点这里树套树题解点这里调完这个。。一晚上居然就又过去了。。。TAT先说下效率我的树套树是283136b7556ms(永久化标记的)分治是3148b1296ms_(:з)∠)_代码长度的话。。两个都差不多T_____T思路:整体二分这玩意。。和cdq分治挺像的样子。。从我的理解来说。。。cdq分治是用[l,mid]更新[mid+1,r]整体二分根据[l,mid]来把询问划分给[l,mid]或者[
MoeO3
·
2015-04-06 21:49
数据结构
二分丨三分
bzoj3110
: [Zjoi2013]K大数查询 【树套树,标记永久化】
原文链接:http://www.cnblogs.com/Macaulish/p/4385489.html//==========================蒟蒻Macaulish:http://www.cnblogs.com/Macaulish/转载要声明!//==========================好久没写题解了。但是这题太神了然后做法太神了于是写一下。这题做法很多,比如黄学长h
weixin_33919941
·
2015-04-01 22:00
bzoj3110
k大数查询 zjoi2013 【树套树】
树套树。在一个区间里面求另一个区间的值本来第一反应是treap套线段树后来发现代码难度对我比较高orz果断改成外层权值线段树套内层区间线段树内层空间硬开开不下。。只好先按着内存上限开了然后用一个变量记录某个点对应的内层线段树节点实现一个伪指针内层的lazy加上永久标记比较快\(^o^)/~#include#defineL(i,j,k)for(inti=j;imid){if(!use[u].ch[1
SAuppp
·
2015-02-10 11:32
(可持久化)线段树
【
BZOJ3110
】【Zjoi2013】K大数查询 树套树 权值线段树套区间线段树
#includeintmain(){puts("转载请注明出处谢谢");puts("http://blog.csdn.net/vmurder/article/details/43020009");}题解:外层权值线段树,内层区间线段树可解。权值都是1~n,就不用离散化了。我写了标记永久化。其它心得神马的:天生对树形数据结构无爱。第一次写树套树,终于知道是怎么回事了。(只针对本题)就是外层每个点都表
空灰冰魂
·
2015-01-22 15:08
线段树
树套树
【
BZOJ3110
】【Zjoi2013】K大数查询 树套树 权值线段树套区间线段树
#include intmain() { puts("转载请注明出处谢谢"); puts("http://blog.csdn.net/vmurder/article/details/43020009"); } 题解:外层权值线段树,内层区间线段树可解。权值都是1~n,就不用离散化了。我写了标记永久化。其它心得神马的:天生对树形数据结构无爱。第一次写树套树,终于知道是怎么回事了。(只针对本题)就是外
Vmurder
·
2015-01-22 15:00
树套树
BZOJ3110
Zjoi2013
K大数查询
权值线段树套区间线段树
[
bzoj3110
][Zjoi2013]K大数查询
好题!法1:看到题目,首先想到的便是树套树。按照一般想法,第一维是区间,第二维权值,不好想(至少我不会。。。据说有人这么干,orz)如果反过来,做法就十分清晰了。对于区间[l,r],将权值在此之内的修改建立一棵普通线段树。这样对于一个询问,就可以类似二分答案,首先看权值在[1,mid]中有几个在询问的区间中,如果 constintN=50000+9,M=N*16*16; introot[N*4
·
2013-08-05 22:00
ZOJ
上一页
1
下一页
按字母分类:
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
其他