一開始快排敲錯兩次
1view codeprogram
hehe;
2var
3t,n,m,i,j,k:longint;
4 c:array[0..1000000] of
longint;
5 pre,next,a,x:array[0..50005] of
longint;
6 ans,p,z,y:array[0..200005] of
longint;78
procedure
sort(l,r:longint);
9var
10zuo,you,mid:longint;
11begin
12 zuo:=l;
13 you:=r;
14 mid:=y[(l+r)>>1
];15
repeat
16while y[zuo]do
inc(zuo);
17while y[you]>mid do
dec(you);
18if zuo<=you then
19begin
20 t:=z[zuo];
21 z[zuo]:=z[you];
22 z[you]:=t;
23 t:=y[zuo];
24 y[zuo]:=y[you];
25 y[you]:=t;
26 t:=p[zuo];
27 p[zuo]:=p[you];
28 p[you]:=t;
29dec(you);
30inc(zuo);
31end;32
until zuo>you;
33if lthen
sort(l,you);
34if zuothen
sort(zuo,r);
35end;36
37function
lowbit(a:longint):longint;
38begin
39 exit(a and(-a));
40end;41
42procedure
add(a,b:longint);
43begin
44while a<=n do
45begin
46 x[a]:=x[a]+b;
47 a:=a+lowbit(a);
48end;49
end;
5051
function
find(a:longint):longint;
52var
53s:longint;
54begin
55 s:=0;56
while a>0
do57
begin
58 s:=s+x[a];
59 a:=a-lowbit(a);
60end;61
exit(s);
62end;63
64begin
65readln(n);
66 fillchar(a,sizeof(a),255
);67
for i:=1
to n do
68begin
69read(a[i]);
70 pre[i]:=c[a[i]];
71 c[a[i]]:=i;
72 next[pre[i]]:=i;
73end;74
read(m);
75for i:=1
to m do
read(z[i],y[i]);
76for i:=1
to m do p[i]:=i;
77 sort(1
,m);
78for i:=1
to m do
79begin
80while jdo
81begin
82inc(j);
83 add(pre[j]+1,1
);84 add(j+1,-1)85
end;
86 ans[p[i]]:=find(z[i]);
87end;88
for i:=1
to m do
89writeln(ans[i]);
90end.
time limit: 4 sec memory limit: 64 mb
submit: 2154 solved: 1062
[submit][status][discuss]
hh有一串由各種漂亮的貝殼組成的項鍊。hh相信不同的貝殼會帶來好運,所以每次散步 完後,他都會隨意取出一段貝殼,思考它們所表達的含義。hh不斷地收集新的貝殼,因此, 他的項鍊變得越來越長。有一天,他突然提出了乙個問題:某一段貝殼中,包含了多少種不同 的貝殼?這個問題很難回答。。。因為項鍊實在是太長了。於是,他只好求助睿智的你,來解 決這個問題。
第一行:乙個整數n,表示項鍊的長度。 第二行:n個整數,表示依次表示項鍊中貝殼的編號(編號為0到1000000之間的整數)。 第三行:乙個整數m,表示hh詢問的個數。 接下來m行:每行兩個整數,l和r(1 ≤ l ≤ r ≤ n),表示詢問的區間。
m行,每行乙個整數,依次表示詢問對應的答案。
61 2 3 4 3 5
31 2
3 52 622
4對於20%的資料,n ≤ 100,m ≤ 1000;
對於40%的資料,n ≤ 3000,m ≤ 200000;
對於100%的資料,n ≤ 50000,m ≤ 200000。
day2
[submit][status][discuss]
樹狀陣列 BZOJ1878 HH的項鍊
hh有一串由各種漂亮的貝殼組成的項鍊。hh相信不同的貝殼會帶來好運,所以每次散步 完後,他都會隨意取出一段貝殼,思考它們所表達的含義。hh不斷地收集新的貝殼,因此,他的項鍊變得越來越長。有一天,他突然提出了乙個問題 某一段貝殼中,包含了多少種不同 的貝殼?這個問題很難回答。因為項鍊實在是太長了。於是...
樹狀陣列 BZOJ1878 HH的項鍊
hh有一串由各種漂亮的貝殼組成的項鍊。hh相信不同的貝殼會帶來好運,所以每次散步 完後,他都會隨意取出一段貝殼,思考它們所表達的含義。hh不斷地收集新的貝殼,因此,他的項鍊變得越來越長。有一天,他突然提出了乙個問題 某一段貝殼中,包含了多少種不同 的貝殼?這個問題很難回答。因為項鍊實在是太長了。於是...
樹狀陣列一點心得
樹狀陣列的基本概念不說了,網上大佬們的講解部落格很多。先上一段我的模板 inline int lowbit int x inline void update int x,int val for int i x i舉兩個例子來加深一下對樹狀陣列的理解。可以知道維護的 tree 陣列 表示到第 i 項的...