BZOJ1878[SDOI2009]HH的项链
Description
Input
Output
Sample Input
1 2 3 4 3 5
3
1 2
3 5
2 6
Sample Output
2
4
HINT
对于20%的数据,N ≤ 100,M ≤ 1000;
对于40%的数据,N ≤ 3000,M ≤ 200000;
对于100%的数据,N ≤ 50000,M ≤ 200000。
题解:
用last[i]记录上一个与i号贝壳相同的贝壳所在位置。对于一段区间[l,r],求出其中满足last[i]<l的i的个数,即为答案。
用线段树记录last为0~n-1的贝壳的个数,因为每加入一个贝壳,只会改变last[0~n-1]中的一个,所以可以用可持久化线段树维护。
代码:
var
i,j,k,n,m,cnt,xx,yy:longint;
pre,root:array[..]of longint;
last:array[..]of longint;
t:array[..,-..]of longint;
function qq(x,l,r:longint):longint;
var ll,rr:longint;
begin
if(t[x,]=l)and(t[x,]=r)then exit(t[x,]);
ll:=t[x,-]; rr:=t[x,-];
if r<=(t[x,]+t[x,])div then exit(qq(ll,l,r));
if l>(t[x,]+t[x,])div then exit(qq(rr,l,r));
exit(qq(ll,l,t[ll,])+qq(rr,t[rr,],r));
end;
procedure build(l,r,x:longint);
var k:longint;
begin
k:=cnt; t[k,]:=l; t[k,]:=r;
if l=r then begin if l=x then t[k,]:=; exit; end;
inc(cnt); t[k,-]:=cnt; build(l,(l+r)div ,x);
inc(cnt); t[k,-]:=cnt; build(((l+r)div )+,r,x);
t[k,]:=t[t[k,-],]+t[t[k,-],];
end;
procedure newtree(l,r,x,y:longint);
var k:longint;
begin
k:=cnt; t[k,]:=l; t[k,]:=r;
if l=r then begin t[k,]:=t[y,]; if l=x then inc(t[k,]); exit; end;
if x<=(l+r)div then
begin
t[k,-]:=t[y,-];
inc(cnt); t[k,-]:=cnt; newtree(l,(l+r)div ,x,t[y,-]);
end else
begin
t[k,-]:=t[y,-];
inc(cnt); t[k,-]:=cnt; newtree(((l+r)div )+,r,x,t[y,-]);
end;
t[k,]:=t[t[k,-],]+t[t[k,-],];
end;
begin
readln(n);
for i:= to n do
begin
read(j); pre[i]:=last[j]; last[j]:=i;
end;
root[]:=; cnt:=;
build(,n,pre[]);
for i:= to n do
begin
inc(cnt); root[i]:=cnt;
newtree(,n,pre[i],root[i-]);
end;
readln(m);
for i:= to m do
begin
readln(j,k);
if j= then xx:= else xx:=qq(root[j-],,j-);
if k= then yy:= else yy:=qq(root[k],,j-);
writeln(yy-xx);
end;
end.
BZOJ1878[SDOI2009]HH的项链的更多相关文章
- BZOJ1878 SDOI2009 HH的项链 【莫队】
BZOJ1878 SDOI2009 HH的项链 Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的 ...
- bzoj千题计划181:bzoj1878: [SDOI2009]HH的项链
http://www.lydsy.com/JudgeOnline/problem.php?id=1878 之前用莫队做的,现在用树状数组 把每种数的第一个出现位置在树状数组中+1 nxt[i] 记录i ...
- BZOJ1878: [SDOI2009]HH的项链 (离线查询+树状数组)
1878: [SDOI2009]HH的项链 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1878 Description: HH有一串由 ...
- [bzoj1878][SDOI2009]HH的项链_莫队
HH 的项链 bzoj-1878 SDOI-2009 题目大意:给定一个n个数的序列.m次询问,每次询问一段区间内数的种类数. 注释:$1\le n\le 5\cdot 10^4$,$1\le m\l ...
- [bzoj1878][SDOI2009]HH的项链_树状数组
HH的项链 bzoj-1878 SDOI-2009 题目大意:给定一个n个数的序列,m次查询.查询区间数的种类个数. 注释:$1\le n \le 5\cdot 10^4$,$1\le m\le 2\ ...
- BZOJ1878 [SDOI2009] HH的项链 [莫队,卡常]
BZOJ传送门,洛谷传送门 HH的项链 Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一 段贝壳,思考它们所表达的含义. ...
- [BZOJ1878] [SDOI2009] HH的项链 (树状数组)
Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH不断地收集新的贝壳,因此, 他的项链变 ...
- 【树状数组】Bzoj1878[SDOI2009] HH的项链
Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH不断地收集新的贝壳,因此, 他的项链变 ...
- [bzoj1878][SDOI2009][HH的项链] (莫队算法)
Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH不断地收集新的贝壳,因此, 他的项链变 ...
随机推荐
- [SQL] SQL 基础知识梳理(五) - 复杂查询
SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...
- ES6环境搭建及react-router学习
一.起因 ES6新纳入了很多振奋人心的新特性,真的很让人忍不住去尝试一下.不过,由于现在大部分的浏览器对ES6的支持程度都不是很好.所以如果想要放心地使用一些新特性,还需要用一些工具,将ES6或者ES ...
- ASP.NET Core 中文文档 第四章 MVC(3.4)如何使用表单
原文:Working with Forms 作者:Rick Anderson.Dave Paquette.Jerrie Pelser 翻译:姚阿勇(Dr.Yao) 校对:孟帅洋(书缘) 这篇文章演示了 ...
- parseInt实例详解
parseInt() 函数可解析一个字符串,并返回一个整数. parseInt(string, radix) 参数 描述 string 必需.要被解析的字符串. radix 可选.表示要解析的数字的基 ...
- 学习之路~sqh
推荐博客 Edison Chou: Vamei: 算法∙面试专题 - 简书: 设计模式 极速理解设计模式系列[目录索引]- Caleung: Net设计模式 - 灵动生活: 宅男程序员给老婆的计算机课 ...
- MVC发布到虚拟主机上出现的错误
问题1:无法识别的属性“targetFramework”.请注意属性名称区分大小写. 现象:无法识别的属性“targetFramework”.请注意属性名称区分大小写. 原因:站点中部署的Web使用的 ...
- AOS – 另外一个独特的页面滚动动画库(CSS3)
AOS 是一个用于在页面滚动的时候呈现元素动画的工具库,你可能会觉得它和 WOWJS 一样,的确他们效果是类似的.但是AOS是 CSS3 动画驱动的库,当你滚动页面的时候能让元素动起来,当页面滚回顶部 ...
- zepto/jQuery、AngularJS、React、Nuclear的演化
写在前面 因为zepto.jQuery2.x.x和Nuclear都是为现代浏览器而出现,不兼容IE8,适合现代浏览器的web开发或者移动web/hybrid开发.每个框架类库被大量用户大规模使用都说明 ...
- AngularJS下对数组的比较
Javascript不能直接用==或者===来判断两个数组是否相等,无论是相等还是全等都不行,以下两行JS代码都会返回false <script type="text/javascri ...
- ArcGIS Engine开发前基础知识(3)
对象模型图 一.对象模型图中的类与接口 ArcGIS Engine 提供大量的对象,这些对象之间存在各种各样的关系,如继承.组合.关联等.对象模型图(Object model diagram,ODM) ...