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
BZOJ3489
本周刷水【2015.11.30~2015.12.6】
bzoj3489
【可持久化线段树】题目大意:多组询问,每次查询一个区间中的只出现一次的数中的最大值,强制在线。
morestep
·
2020-08-25 11:07
每周刷题
bzoj3489
: A simple rmq problem
update2018.1.3今天晚上,陈队问我是怎么做的,我说分块才想起有一个log没有去掉于是想了一下,还真的可以去掉这个log我们先对数集进行离散化考虑从后往前扫,一次加入数字然后加入一个数的时候,更新一下这个数出现的最后两个位置那么出现了一次的就是这两个点之间然后我们当遇到块的端点的时候,然后就从大到小扫一下数组,设这两个位置为l,r然后我们就对在l,r区间里面的块端点j,f[i][j]加入
OI界第一麻瓜
·
2020-07-05 06:39
分块
bzoj3489
A simple rmq problem
http://www.elijahqi.win/2018/01/12/bzoj3489-a-simple-rmq-problem/Description因为是OJ上的题,就简单点好了。给出一个长度为n的序列,给出M个询问:在[l,r]之间找到一个在这个区间里只出现过一次的数,并且要求找的这个数尽可能大。如果找不到这样的数,则直接输出0。我会采取一些措施强制在线。Input第一行为两个整数N,M。M
elijahqi
·
2020-07-04 15:23
kd-tree
[
bzoj3489
] A simple rmq problem 解题报告
说几种比较傻逼的做法:考虑一个点i,设它前面第一个和它相等的点的位置是lasti(若没有就是0),设它后面第一个和它相等的点的位置是nexti(如果没有就是n+1),则它会产生贡献的区间[l,r]要求lasti+1≤l≤i,i≤r≤nexti−1。所以如果把询问的区间看作平面上的点,这就相当于是对一个矩形产生贡献,考虑到这题要求离线,所以我们就可以用二维可持久化线段树来搞。。就这样跑了17s。。我
TA201314
·
2020-07-04 08:20
k-d树
线段树
【
BZOJ3489
】A simple rmq problem
Description因为是OJ上的题,就简单点好了。给出一个长度为n的序列,给出M个询问:在[l,r]之间找到一个在这个区间里只出现过一次的数,并且要求找的这个数尽可能大。如果找不到这样的数,则直接输出0。我会采取一些措施强制在线。Input第一行为两个整数N,M。M是询问数,N是序列的长度(N_#include#include#include#include#defineMAXN100010#
CreationAugust
·
2020-07-04 05:55
随便搞搞
模板题库
奇怪的姿势
kdtree
[
BZOJ3489
]A simple rmq problem(kd-tree)
题目描述传送门题解听说这道题是可以写主席树套树的(ATP%%%)我的做法是三维kd-tree,分别是:这个点的位置,上一个相同数字的位置,下一个相同数字的位置然后每一个有一个点权即为这一位上的数字,然后对于每一个子树维护位置的最大值和最小值,以及前面的最小值和后面的最大值,这样来判断、暴力即可我刚开始的时候强行把点权塞到一维里去,然后吃惊地发现比3d要快一些,大概是因为某些时候按照点权这一维度划分
Clove_unique
·
2020-07-04 05:13
题解
kd-tree
[
bzoj3489
]A simple rmq problem_KD-Tree
Asimplermqproblem题目大意:给定一个长度为$n$的序列,给出$m$个询问:在$[l,r]$之间找到一个在这个区间里只出现过一次的最大的数。注释:$1\len\le10^5$,$1\lemle2\cdot10^5$。想法:我的第一想法是莫队。结果发现是强制在线(离线我也不会...想了想其实$KD-Tree$还是比较显然的。我们设$l_i$表示$a_i$上一次出现的位置,$r_i$表示
dianan0938
·
2020-06-23 04:51
BZOJ3489
A simple rmq problem
设第i个数上一次出现的位置为lst[i],下一次出现的位置为nxt[i],那么第i个数可以用作更新答案的条件就是lst[i]r&&l#include#include#include#include#include#include#include#include#include#include#include#include#includeusingnamespacestd;#defineMAXN1
neither_nor
·
2016-07-09 23:34
BZOJ
主席树
树套树
二维线段树
[
bzoj3489
] A simple rmq problem 解题报告
说几种比较傻逼的做法:考虑一个点i,设它前面第一个和它相等的点的位置是lasti(若没有就是0),设它后面第一个和它相等的点的位置是nexti(如果没有就是n+1),则它会产生贡献的区间[l,r]要求lasti+1≤l≤i,i≤r≤nexti−1。所以如果把询问的区间看作平面上的点,这就相当于是对一个矩形产生贡献,考虑到这题要求离线,所以我们就可以用二维可持久化线段树来搞。。就这样跑了17s。。我
TA201314
·
2016-04-26 07:00
线段树
K-D树
【
BZOJ3489
】A simple rmq problem
Description因为是OJ上的题,就简单点好了。给出一个长度为n的序列,给出M个询问:在[l,r]之间找到一个在这个区间里只出现过一次的数,并且要求找的这个数尽可能大。如果找不到这样的数,则直接输出0。我会采取一些措施强制在线。Input第一行为两个整数N,M。M是询问数,N是序列的长度(N_ #include #include #include #include #defineMAXN10
CreationAugust
·
2016-04-24 08:00
KDTree
本周刷水【2015.11.30~2015.12.6】
bzoj3489
【可持久化线段树】题目大意:多组询问,每次查询一个区间中的只出现一次的数中的最大值,强制在线。
morestep
·
2015-12-06 20:00
上一页
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
其他