首页 > bzoj2743

bzoj2743

其实和bzoj1878类似

只不过要求的是区间内数量多于1个的数字种数

其实还是按照bzoj1878做

只不过我们是把每一种数字下一个出现的位置+1,并把这个位置置为0

 1 var x,y,ans,p,last,a,c,next:array[0..1000010] of longint;
 2     max,i,n,m,j:longint;
 3 
 4 function lowbit(x:longint):longint;
 5   begin
 6     exit(x and(-x));
 7   end;
 8 
 9 function sum(x:longint):longint;
10   begin
11     sum:=0;
12     while x<>0 do
13     begin
14       sum:=sum+c[x];
15       x:=x-lowbit(x);
16     end;
17   end;
18 
19 procedure add(x,t:longint);
20   begin
21     while x<=n do
22     begin
23       inc(c[x],t);
24       x:=x+lowbit(x);
25     end;
26   end;
27 
28 procedure swap(var a,b:longint);
29   var c:longint;
30   begin
31     c:=a;
32     a:=b;
33     b:=c;
34   end;
35 
36 procedure sort(l,r: longint);
37   var i,j,z: longint;
38   begin
39     i:=l;
40     j:=r;
41     z:=x[(l+r) div 2];
42     repeat
43       while x[i]do inc(i);
44       while zdo dec(j);
45       if not(i>j) then
46       begin
47         swap(x[i],x[j]);
48         swap(y[i],y[j]);
49         swap(p[i],p[j]);
50         inc(i);
51         dec(j);
52       end;
53     until i>j;
54     if lthen sort(l,j);
55     if ithen sort(i,r);
56   end;
57 
58 begin
59   readln(n,max,m);
60   for i:=1 to n do
61     read(a[i]);
62 
63   for i:=1 to m do
64   begin
65     readln(x[i],y[i]);
66     p[i]:=i;
67   end;
68   sort(1,m);
69   fillchar(last,sizeof(last),0);
70   for i:=n downto 1 do
71   begin
72     next[i]:=last[a[i]];
73     last[a[i]]:=i;
74   end;
75   for i:=1 to max do
76     if next[last[i]]<>0 then add(next[last[i]],1);
77 
78   j:=1;
79   for i:=1 to n do
80   begin
81     while x[j]=i do
82     begin
83       ans[p[j]]:=sum(y[j])-sum(x[j]-1);
84       inc(j);
85     end;
86     if next[i]<>0 then add(next[i],-1);
87     if next[next[i]]<>0 then add(next[next[i]],1);
88   end;
89   for i:=1 to m do
90     writeln(ans[i]);
91 end.
View Code

 

转载于:https://www.cnblogs.com/phile/p/4473139.html

更多相关:

  • CFAbsoluteTime start = CFAbsoluteTimeGetCurrent(); //在这写入要计算时间的代码 // do something CFAbsoluteTime end = CFAbsoluteTimeGetCurrent(); NSLog(@"%f", end - start); 转载于:ht...

  • Given a sorted integer array without duplicates, return the summary of its ranges. For example, given [0,1,2,4,5,7], return ["0->2","4->5","7"]. 代码要求对数组中的元素进行分段。 首先给...

  • Hello,此BAT脚本能够帮助开发者将某目录下全部SQL脚本按文件名称依次在指定数据库中批量执行。不用忍受powershell invoke-sqlcmd 的笨重。在指执行时多一种选择。 bat文件 @echo off @REM ******** ******** General Batch for Starting SQL...

  • Description 设有一个n×m(小于100)的方格(如图所示),在方格中去掉某些点,方格中的数字代表距离(为小于100的数,如果为0表示去掉的点),试找出一条从A(左上角)到B(右下角)的路径,经过的距离和为最小(此时称为最小代价),从A出发的方向只能向右,或者向下。 Sample Input 4 4 4 10 7 0...

  • 有些Windows聚焦图片确实很漂亮,很希望保留下来,但是Windows聚焦图片总更好,网上有得到聚焦图片的方法,每次都手动去弄真麻烦,于是自己编了一个小程序,自动得到Windows聚焦图片,下面是运行这个小程序得到Windows聚焦图片的效果! 小工具以及源码下载:http://download.csdn.net/detail/su...

  • 文章目录环境原理说明总结 环境 ceph:12.2.1 场景:ec 2+1 部署cephfs,执行如右写模式:dd if=/dev/zero of=/xxx/cephfs bs=6K count=4 oflag=direct 关键配置: bluestore_min_alloc_size_hdd = 65536 bluesto...