線段樹 線段樹練習題二

2021-10-23 11:00:15 字數 1278 閱讀 1973

桌子上零散地放著若干個不同顏色的盒子,桌子的後方是一堵牆。如右圖所示。問從桌子前方可以看到多少個盒子?假設人站得足夠遠(輸入時,由底向上,從左到右)。

16 //桌子長度

5 // 盒子數量

4 712 14

1 56 10

11 16

1<=n<=100000,1<=m<=100000,保證座標範圍為[1,n].

#include

#include

using

namespace std;

int n,m,l,r,f[

400001]=

,tr[

400001]=

,ans=0;

void

countt

(int t,

int a,

int b)

;void

insertt

(int t,

int a,

int b,

int x,

int y,

int c)

;int

main()

countt(1

,1,n);

for(

int i=

1;i<=m;i++)if

(f[i]

)ans++

;printf

("%d"

,ans)

;return0;

}void

countt

(int t,

int a,

int b)

void

insertt

(int t,

int a,

int b,

int x,

int y,

int c)

if(y<=mid)

insertt

(t*2

,a,mid,x,y,c)

;else

if(x>=mid)

insertt

(t*2+1

,mid,b,x,y,c)

;else

insertt

(t*2

,a,mid,x,mid,c)

,insertt

(t*2+1

,mid,b,mid,y,c);}

}}

線段樹 線段樹練習題二

桌子上零散地放著若干個不同顏色的盒子,桌子的後方是一堵牆。如右圖所示。問從桌子前方可以看到多少個盒子?假設人站得足夠遠 輸入時,由底向上,從左到右 input 第一行,乙個數m代表桌子長度 第二行,乙個數n代表盒子數量 第3到n 2行,每行兩個數,代表盒子的寬度 output 乙個數,可以看到的盒子...

線段樹 線段樹練習題一

桌子上零散地放著若干個盒子,桌子的後方是一堵牆。如右圖所示。現在從桌子的前方射來一束平行光,把盒子的影子投射到了牆上。問影子的總寬度是多少?第一行,乙個數m代表桌面寬度 第二行,乙個數n代表盒子數量 第2到n 2行,每行兩個數代表盒子開始與結束的位置 output 乙個數,影子的總寬度 sample...

線段樹 線段樹練習題三

題解。啊好煩懶得看,於是就拿線段樹練習題二改了。給定一條長度為m的線段,有n個操作,每個操作有3個數字x,y,z表示把區間 x,y 染成顏色z,詢問染完色之後,這條長度為m的線段一共有幾種顏色。規定 線段的顏色可以相同。連續的相同顏色被視作一段。問x軸被分成多少段。input 第一行,兩個數n,m分...