演算法:線段樹
分析:思想跟忠誠2是基本類似的,只需要在原程式中做少量的改動即可,第一次做這道題的時候不知道為什麼最後兩個點會超時,然後又用堆寫,結果只得了一半的分。最後,無奈又回到到了線段樹……
program p1607;
const
maxn=100000;
type
tre=record
lc,rc,l,r,maxdata:longint;
end;
var m,n,root,tot,x,y,temp:longint;
tree:array [-1..maxn*4] of tre;
procedure build(var t:longint;l,r:longint);
begin
inc(tot);
t:=tot;
tree[t].l:=l;
tree[t].r:=r;
tree[t].maxdata:=0;
if l=r then exit;
if ly then exit(x) else exit(y);
end;
function find(t,l,r:longint):longint;
begin
if t=0 then exit;
if (tree[t].l=l) and (tree[t].r=r) then exit(tree[t].maxdata);
if r<=tree[tree[t].lc].r then exit(find(tree[t].lc,l,r))
else if l>=tree[tree[t].rc].l then exit(find(tree[t].rc,l,r))
else exit(max(find(tree[t].lc,l,tree[tree[t].lc].r),find(tree[t].rc,tree[tree[t].rc].l,r)));
end;
procedure change(t,data,l,r:longint);
begin
if t=0 then exit;
if (tree[t].l=x) and (tree[t].r=x) then
begin
tree[t].maxdata:=data;
exit;
end;
if l>=tree[tree[t].rc].l then change(tree[t].rc,data,l,r)
else if r<=tree[tree[t].lc].r then change(tree[t].lc,data,l,r)
else
begin
change(tree[t].lc,data,l,tree[tree[t].lc].r);
change(tree[t].rc,data,tree[tree[t].rc].l,r);
end;
tree[t].maxdata:=max(tree[tree[t].lc].maxdata,tree[tree[t].rc].maxdata);
end;
procedure init;
var i,j:longint;
ch:char;
begin
root:=0;
tot:=0;
readln(m,n);
build(root,1,m);
for i:=1 to n do
begin
read(ch);
case ch of
'y':begin
for j:=1 to 4 do read(ch);
readln;
writeln(find(root,1,m));
end;
'l':begin
for j:=1 to 3 do read(ch);
readln(x,y);
change(root,y,x,x);
end;
'u':begin
for j:=1 to 5 do read(ch);
readln(x);
change(root,-10000000,x,x);
end;
end;
end;
end;
begin
assign(input,'p1607.in'); reset(input);
assign(output,'p1607.out'); rewrite(output);
init;
close(input); close(output);
end.
小熊錯誤 小熊的錯誤
小熊碰上牛大嬸拉著滿滿一車的水果往前趕,小熊順手拿了兩個蘋果吃了起來,牛大嬸遇到上坡,怎麼使力氣也拉不上去,牛大嬸對小熊說 小熊,可不可以請你幫忙在後面推一下我的車呢?小熊朝牛大嬸做了個鬼臉轉頭跑掉了,小熊看到小白兔在河邊穿著新裙子正高興著呢,趁白兔妹妹不注意從後面推了一把白兔妹妹,一下子把白兔妹妹...
20191004機房測試 ZGY的早餐
zgy 每天早上要從宿舍走路到機房,順便從學校小賣部購買早飯,當然機智的 zgy 一定會走最短路 學校的路可以看成一無向聯通張圖,圖上有 n 個點,m 條邊,每乙個點都有乙個唯一的編號 1 n 每一條邊有乙個邊權,表示兩個點之間的距離,zgy 的宿舍在 s 點,機房在 t點,而小賣部在 h 點 現在...
小熊崽紙的杭電2007
平方和與立方和 problem description 給定一段連續的整數,求出他們中所有偶數的平方和以及所有奇數的立方和。input 輸入資料報含多組測試例項,每組測試例項包含一行,由兩個整數m和n組成。output 對於每組輸入資料,輸出一行,應包括兩個整數x和y,分別表示該段連續的整數中所有偶...