tyvj P1039 충성 2 - 선분 트 리 동적 조회 구간 극치 실현
17135 단어 선분 수
1
type
2
ji
=^
rec;
3
rec
=
record
4
l,r,min:longint;
5
lson,rson:ji;
6
end;
7
8
var
9
a:ji;
10
b:array[
0
..
100000
] of longint;
11
i,j,x,y,m,n:longint;
12
13
function minn(x,y:longint):longint;
14
begin
15
if
x
<
y then exit(x);
16
exit(y);
17
end;
18
19
procedure build(var a:ji; l,r:longint);
20
var
21
mid:longint;
22
begin
23
new
(a);
24
a
^
.l:
=
l;
25
a
^
.r:
=
r;
26
mid:
=
(l
+
r)
>>
1
;
27
if
l
=
r then
28
begin
29
a
^
.min:
=
b[l];
30
exit;
31
end;
32
build(a
^
.lson,l,mid);
33
build(a
^
.rson,mid
+
1
,r);
34
a
^
.min:
=
minn(a
^
.lson
^
.min,a
^
.rson
^
.min);
35
end;
36
37
function find(a:ji; l,r:longint):longint;
38
var
39
mid,k:longint;
40
begin
41
if
(l
<=
a
^
.l)and(r
>=
a
^
.r) then exit(a
^
.min);
42
mid:
=
(a
^
.l
+
a
^
.r)
>>
1
; k:
=
maxlongint;
43
if
mid
>=
l then k:
=
minn(k,find(a
^
.lson,l,r));
44
if
mid
<
r then k:
=
minn(k,find(a
^
.rson,l,r));
45
exit(k);
46
end;
47
48
procedure change(var a:ji; x,y:longint);
49
var
50
mid:longint;
51
begin
52
if
(x
=
a
^
.l)and(x
=
a
^
.r) then
53
begin
54
a
^
.min:
=
y;
55
exit;
56
end;
57
mid:
=
(a
^
.l
+
a
^
.r)
>>
1
;
58
if
mid
>=
x then change(a
^
.lson,x,y);
59
if
mid
<
x then change(a
^
.rson,x,y);
60
a
^
.min:
=
minn(a
^
.lson
^
.min,a
^
.rson
^
.min);
61
end;
62
63
begin
64
readln(n,m);
65
for
i:
=
1
to n
do
read(b[i]);
66
build(a,
1
,n);
67
for
i:
=
1
to m
do
68
begin
69
readln(j,x,y);
70
if
j
=
1
then write(find(a,x,y),
'
'
)
71
else
change(a,x,y);
72
end;
73
end.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
HDU - 1166 - 적병 포진 (나무형 수조 또는 선분 수)C 국 의 앙 숙 A 국 은 그동안 군사훈련 을 하고 있 었 기 때문에 C 국 간첩 두목 인 데 릭 과 그의 수하 인 티 디 는 또 바 빠 지기 시작 했다.A 국 가 는 해안선 을 따라 직선 으로 N 개 공병 캠프 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.