小熊的早餐(TYVJ1607)

2021-05-27 18:34:18 字數 2326 閱讀 6340

演算法:線段樹

分析:思想跟忠誠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,分別表示該段連續的整數中所有偶...