生活随笔
收集整理的這篇文章主要介紹了
3211: 花神游历各国
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
3211: 花神游歷各國
Time Limit:?5 Sec??Memory Limit:?128 MB
Submit:?1042??Solved:?381
[Submit][Status]
Description
Input
Output
每次x=1時,每行一個整數,表示這次旅行的開心度
?
Sample Input
4
1 100 5 5
5
1 1 2
2 1 2
1 1 2
2 2 3
1 1 4
Sample Output
101
11
11
HINT
?
對于100%的數據, n ≤ 100000,m≤200000 ,data[i]非負且小于10^9
?
?
Source
SPOJ2713 gss4 數據已加強
題解:嗯哼!!!果然是加強版的數據,可惜還是一遍AC了(HansBug:^_^,咦?最近phile呢?),其實和“上帝造題的7分鐘2”基本上一樣,就是它的強化版,重點在于處理優化掉一些不必要的操作即可(比如當某區間內的數字全部<=1呵呵呵),具體不再贅述,詳見我的代碼模板:線段樹5(傳送門在此)
1 var
2 i,j,k,l,m,n:longint;
3 a,b:
array[
0..
1000000]
of int64;
4 function max(x,y:longint):longint;inline;
5 begin
6 if x>y
then max:=x
else max:=
y;
7 end;
8 function min(x,y:longint):longint;inline;
9 begin
10 if x<y
then min:=x
else min:=
y;
11 end;
12
13 procedure built(z,x,y:longint);inline;
14 begin
15 if (x=y)
then
16 begin
17 read(a[z]);
18 if a[z]<=
1 then b[z]:=
1 else b[z]:=
0;
19 end
20 else
21 begin
22 built(z*
2,x,(x+y)
div 2);
23 built(z*
2+
1,(x+y)
div 2+
1,y);
24 a[z]:=a[z*
2]+a[z*
2+
1];
25 if (b[z*
2]=
1)
and (b[z*
2+
1]=
1)
then b[z]:=
1 else b[z]:=
0;
26 end;
27 end;
28 function op(z,x,y,l,r:longint):int64;inline;
29 var a2,a3:int64;
30 begin
31 if l>r
then exit(
0);
32 if b[z]=
1 then exit(
0);
33 if (x=l)
and (y=r)
and (l=r)
then
34 begin
35 a2:=
a[z];
36 a[z]:=
trunc(sqrt(a[z]));
37 if a[z]<=
1 then b[z]:=
1;
38 exit(a[z]-
a2);
39 end;
40 a2:=op(z*
2,x,(x+y)
div 2,l,min(r,(x+y)
div 2));
41 a3:=op(z*
2+
1,(x+y)
div 2+
1,y,max((x+y)
div 2+
1,l),r);
42 a[z]:=a[z]+a2+
a3;
43 if (b[z*
2]=
1) AND (b[z*
2+
1]=
1)
then b[z]:=
1;
44 exit(a2+
a3);
45 end;
46 function cal(z,x,y,l,r:longint):int64;inline;
47 var a2,a3:int64;
48 begin
49 if l>r
then exit(
0);
50 if (x=l)
and (y=r)
then exit(a[z]);
51 a2:=cal(z*
2,x,(x+y)
div 2,l,min(r,(x+y)
div 2));
52 a3:=cal(z*
2+
1,(x+y)
div 2+
1,y,max((x+y)
div 2+
1,l),r);
53 exit(a2+
a3);
54 end;
55 begin
56 readln(n);
57 built(
1,
1,n);
58 readln;
59 readln(m);
60 for i:=
1 to m
do
61 begin
62 readln(j,k,l);
63 case j
of
64 1:writeln(cal(
1,
1,n,k,l));
65 2:op(
1,
1,n,k,l);
66 end;
67 end;
68 readln;
69 end.
70 ?
轉載于:https://www.cnblogs.com/HansBug/p/4266586.html
總結
以上是生活随笔為你收集整理的3211: 花神游历各国的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。