当前位置: 首页 > news >正文

优秀网站介绍seo综合查询 站长工具

优秀网站介绍,seo综合查询 站长工具,靖江网站推广,苏州做网站企业Description HH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH不断地收集新的贝壳,因此, 他的项链变得越来越长。有一天&#xf…

Description

HH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH不断地收集新的贝壳,因此, 他的项链变得越来越长。有一天,他突然提出了一个问题:某一段贝壳中,包含了多少种不同 的贝壳?这个问题很难回答。。。因为项链实在是太长了。于是,他只好求助睿智的你,来解 决这个问题。

Input

第一行:一个整数N,表示项链的长度。 第二行:N个整数,表示依次表示项链中贝壳的编号(编号为0到1000000之间的整数)。 第三行:一个整数M,表示HH询问的个数。 接下来M行:每行两个整数,L和R(1 ≤ L ≤ R ≤ N),表示询问的区间。

Output

M行,每行一个整数,依次表示询问对应的答案。

Sample Input

6
1 2 3 4 3 5
3
1 2
3 5
2 6

Sample Output

2
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]中的一个,所以可以用可持久化线段树维护

 

代码:

 1 var
 2   i,j,k,n,m,cnt,xx,yy:longint;
 3   pre,root:array[1..50001]of longint;
 4   last:array[0..1000000]of longint;
 5   t:array[1..3000000,-2..2]of longint;
 6 function qq(x,l,r:longint):longint;
 7 var ll,rr:longint;
 8 begin
 9   if(t[x,1]=l)and(t[x,2]=r)then exit(t[x,0]);
10   ll:=t[x,-1]; rr:=t[x,-2];
11   if r<=(t[x,1]+t[x,2])div 2 then exit(qq(ll,l,r));
12   if l>(t[x,1]+t[x,2])div 2 then exit(qq(rr,l,r));
13   exit(qq(ll,l,t[ll,2])+qq(rr,t[rr,1],r));
14 end;
15 procedure build(l,r,x:longint);
16 var k:longint;
17 begin
18   k:=cnt; t[k,1]:=l; t[k,2]:=r; 
19   if l=r then begin if l=x then t[k,0]:=1; exit; end;
20   inc(cnt); t[k,-1]:=cnt; build(l,(l+r)div 2,x);
21   inc(cnt); t[k,-2]:=cnt; build(((l+r)div 2)+1,r,x);
22   t[k,0]:=t[t[k,-1],0]+t[t[k,-2],0];
23 end;
24 procedure newtree(l,r,x,y:longint);
25 var k:longint;
26 begin
27   k:=cnt; t[k,1]:=l; t[k,2]:=r;
28   if l=r then begin t[k,0]:=t[y,0]; if l=x then inc(t[k,0]); exit; end;
29   if x<=(l+r)div 2 then
30   begin
31     t[k,-2]:=t[y,-2];
32     inc(cnt); t[k,-1]:=cnt; newtree(l,(l+r)div 2,x,t[y,-1]);
33   end else
34   begin
35     t[k,-1]:=t[y,-1];
36     inc(cnt);  t[k,-2]:=cnt; newtree(((l+r)div 2)+1,r,x,t[y,-2]);
37   end;
38   t[k,0]:=t[t[k,-1],0]+t[t[k,-2],0];
39 end;
40 begin
41   readln(n);
42   for i:=1 to n do 
43   begin
44     read(j); pre[i]:=last[j]; last[j]:=i;
45   end;
46   root[1]:=1; cnt:=1;
47   build(0,n,pre[1]);
48   for i:=2 to n do
49   begin
50     inc(cnt); root[i]:=cnt;
51     newtree(0,n,pre[i],root[i-1]);
52   end;
53   readln(m);
54   for i:=1 to m do
55   begin
56     readln(j,k);
57     if j=1 then xx:=0 else xx:=qq(root[j-1],0,j-1);
58     if k=0 then yy:=0 else yy:=qq(root[k],0,j-1);
59     writeln(yy-xx);
60   end;
61 end.
View Code

转载于:https://www.cnblogs.com/GhostReach/p/6257174.html

http://www.lbrq.cn/news/2712853.html

相关文章:

  • 怎样搭建一个企业网站大连网站建设
  • 如何用网站首页做404北京网站建设公司报价
  • 自己网站如何做关键词sem优化师
  • 网站替换图片怎么做seo自学网
  • 南昌大学作风建设网站html网页制作代码大全
  • 空间网站建设网站很卡如何优化
  • 自然人做音频网站违法吗企业邮箱怎么注册
  • 宁波网站建设的步骤过程小程序定制开发
  • 大气的化妆品网站名推广平台软件有哪些
  • 大良网站建设dwxw西安seo排名公司
  • 推广普通话的方针班级优化大师手机版下载
  • 独立ip网站建设网站分享
  • 网站开发环境的安装说明室内设计师培训班学费多少
  • 部落冲突做弊器网站网站关键词提升
  • 移动端网站开发介绍做电商一个月能挣多少钱
  • 做网站练手项目电商网站seo怎么做
  • 上海网站备案咨询二十个优化
  • 做网站4000-262-263专门代写平台
  • dz怎么做视频网站上海好的seo公司
  • 购物网站 app汕头seo外包平台
  • bt蚂蚁磁力搜索天堂网站做优化好还是推广好
  • 企业网站开发建设委托合同杭州优化外包
  • 自己做的网站能在线支付西安网站优化培训
  • 枞阳网站制作网络营销和网站推广的区别
  • 做交网站杭州百度
  • 咸阳网站制作深圳市龙华区
  • 大连做网站软件网站权重一般有几个等级
  • 江门网站优化百度免费注册
  • 24小时有效地址域名惠州seo优化
  • 网站建设 bs模式营销策略的概念
  • Linux 文件系统简介
  • 开发避坑指南(26):Vue3 input输入框前置后 置元素解决方案
  • ActionChains 鼠标操作笔记
  • 公司项目用户密码加密方案推荐(兼顾安全、可靠与通用性)
  • Windows基础概略——第一阶段
  • C++QT HTTP与HTTPS的使用方式