开花 (Standard IO)
題意/Description:
? ? ? ?在遙遠(yuǎn)的火星上,上面的植物非常奇怪,都是長(zhǎng)方形的,每個(gè)植物用三個(gè)數(shù)來描述:左邊界L、右邊界R以及高度H,如下圖所示描述一個(gè)植物:L=2,R=5和H=4。
? ? ? ?每天都有一個(gè)新植物長(zhǎng)出來,第一天的植物高度為1,后面每天長(zhǎng)出的植物比前一天的高1。
當(dāng)一個(gè)新植物長(zhǎng)出來的時(shí)候,跟其他植物的水平線段相交處會(huì)長(zhǎng)出一朵小花(前提是之前沒有長(zhǎng)出花朵),如果線段交于端點(diǎn),是不會(huì)長(zhǎng)花的。
下圖為樣例1的示意圖:
? ? ? ?給出每天的植物的坐標(biāo),計(jì)算每天長(zhǎng)出多少新花。
?
讀入/Input:
? ? ? ?第一行包含一個(gè)整數(shù)N(1<=N<=100000),表示天數(shù)。
接下來N行,每行兩個(gè)整數(shù)L和R(1<=L<=R<=100000),表示植物的左右邊界。
?
輸出/Output:
? ? ? ?輸出每天長(zhǎng)出新植物后增加新花的數(shù)量。
?
題解/solution:
就是個(gè)線段樹。請(qǐng)看:
http://blog.csdn.net/a_loud_name/article/details/51910169
?
代碼/Code:
?
typearr=recordl,r,cover:longint;end; vartree:array [0..800001] of arr;a:array [0..100001] of longint;n,ans:longint; procedure cre(p,x,y:Longint); varmid:longint; beginwith tree[p] dobeginl:=x; r:=y;if y=x then exit;mid:=(x+y) div 2;cre(p*2,x,mid);cre(p*2+1,mid+1,y);end; end;procedure count(p,x,y:longint); varmid:longint; beginwith tree[p] dobeginans:=ans+cover;mid:=(l+r) div 2;if (l=x) and (r=y) then exit;if y<=mid then count(p*2,x,y) elseif x>=mid+1 then count(p*2+1,x,y) elsebegincount(p*2+1,x,mid);count(p*2+1,mid+1,y);end;end; end;procedure ins(p,x,y:longint); varmid:longint; beginwith tree[p] dobeginmid:=(l+r)div 2;if (x=l) and (y=r) thenbegininc(cover);exit;end;if (y<=mid) then ins(p*2,x,y) elseif (x>=mid+1) then ins(p*2+1,x,y) elsebeginins(p*2,x,mid);ins(p*2+1,mid+1,y);end;end; end;procedure init; vari,x,y,t,k:longint; beginreadln(n);cre(1,1,100001);for i:=1 to n dobeginreadln(x,y);ans:=0;count(1,x,x);t:=ans;count(1,y,y);k:=ans-t;writeln(ans-a[x]-a[y]);a[x]:=t+1;a[y]:=k+1;ins(1,x,y);end; end;begininit; end.?
轉(zhuǎn)載于:https://www.cnblogs.com/zyx-crying/p/9319647.html
超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的开花 (Standard IO)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Entity Framework查询,E
- 下一篇: ASP.NET常见面试题及答案(130题