開花 紀中 1435 線段樹

2021-07-14 22:37:52 字數 2568 閱讀 8461

在遙遠的火星上,上面的植物非常奇怪,都是長方形的,每個植物用三個數來描述:左邊界l、右邊界r以及高度h,如下圖所示描述乙個植物:l=2,r=5和h=4。

每天都有乙個新植物長出來,第一天的植物高度為1,後面每天長出的植物比前一天的高1。

當乙個新植物長出來的時候,跟其他植物的水平線段相交處會長出一朵小花(前提是之前沒有長出花朵),如果線段交於端點,是不會長花的。

下圖為示意圖:

給出每天的植物的座標,計算每天長出多少新花。

第一行包含乙個整數n(1<=n<=100000),表示天數。

接下來n行,每行兩個整數l和r(1<=l<=r<=100000),表示植物的左右邊界。

輸出每天長出新植物後增加新花的數量。

一眼就知道這是乙個線段樹啊!!!

和這個模板很像——線段樹

查詢時查乙個區間的端點[x,x]和[y,y]

一定要用格仔線段樹~~~

type

pnode=^tnode;

tnode=record

lc,rc:pnode;

c:longint;

end;

var t:pnode;

i,j,k:longint;

x,y:longint;

n,m:longint;

ans:longint;

a,b:array[1..100010] of longint;

procedure

neww

(var t:pnode);

begin

if t=nil

then

begin

new(t);

t^.c:=0;

t^.lc:=nil;

t^.rc:=nil;

end;

end;

procedure

insert

(var t:pnode; l,r,x,y:longint);

var i,j,k:longint;

mid:longint;

begin

with t^ do

begin

mid:=(l+r) div

2; if (l=x) and (r=y)

then

begin

c:=c+1;

exit;

end;

if (l<=x) and (mid>=y)

then

begin

neww(lc);

insert(lc,l,mid,x,y);

exit;

end;

if (midand (r>=y)

then

begin

neww(rc);

insert(rc,mid+1,r,x,y);

exit;

end;

neww(lc);

neww(rc);

insert(lc,l,mid,x,mid);

insert(rc,mid+1,r,mid+1,y);

end;

end;

procedure

find

(t:pnode;l,r:longint;x,y:longint);

var mid:longint;

begin

if t=nil

then

exit;

with t^ do

begin

ans:=ans+c;

mid:=(l+r) div

2; if (l<=x) and (mid>=y)

then

begin

find(lc,l,mid,x,y);

exit;

end;

if (midand (r>=y)

then

begin

find(rc,mid+1,r,x,y);

exit;

end;

find(lc,l,mid,x,mid);

find(rc,mid+1,r,mid+1,y);

end;

end;

begin

m:=100010;

readln(n);

fillchar(t,sizeof(t),0);

neww(t);

for i:=1

to n do

begin

readln(x,y);

ans:=0;

find(t,1,m,x,x);

j:=ans;

find(t,1,m,y,y);

k:=ans-j;

writeln(ans-a[x]-a[y]);

a[x]:=j+1; a[y]:=k+1;

insert(t,1,m,x,y);

end;

end.

開花 紀中1742 線段樹

description 在遙遠的火星上,上面的植物非常奇怪,都是長方形的,每個植物用三個數來描述 左邊界l 右邊界r以及高度h,如下圖所示描述乙個植物 l 2,r 5和h 4。每天都有乙個新植物長出來,第一天的植物高度為1,後面每天長出的植物比前一天的高1。當乙個新植物長出來的時候,跟其他植物的水平...

(紀中)2173 無根樹 tree SPFA

file io input tree.in output tree.out 時間限制 1000 ms 空間限制 131072 kb 具體限制 goto problemset 題目描述 味味最近對樹很感興趣,什麼是樹呢?樹就是有n nn個點和n 1 n 1n 1條邊形成的無環連通無向圖。今年2012 ...

2017紀中10 24 合影 樹型DP 組合數學

題面 因為每個人只有乙個要求,假如a要求在b左邊,a就向b連一條邊的話,就是乙個帶環樹。當然,有環直接無解。所以剩下的是森林。我們把子樹看成乙個子問題,假如知道了子樹內部的答案如何轉移到父親。設當前轉移x,x的所有子樹都應該安排在x左邊,也就是首先有size x 1個空來安排,每安排乙個子樹剩下的空...