題目大意:
以從左往右,從後往前的順序給出一些線段。最後從前面可以看見多少條線段?
思路:
模擬?100%超時
離散?100%爆記憶體
所以,這道題的最優解是——
我也不知道
———下面進入正題———
一道模板題吧。
對於tree[x]:
tree[x].l為它的左端點
tree[x].r為它的右端點
tree[x].cover表示它是否有線段
tree[x*2]為它的左兒子
tree[x*2+1]為它的右兒子
1.建樹
2.輸入,記錄
3.計算總長度,輸出,ac
**:
#include
#include
using
namespace
std;
int n,sum,m,x,y;
struct n
tree[100001];
void make(int x) //建樹
void insert(int x,int l,int r) //插入
int mid=(tree[x].l+tree[x].r)/2;
if (mid>=r) //完全在左邊
if (mid<=l) //完全在右邊
insert(x*2,l,mid);
insert(x*2+1,mid,r); //左右都有
}int count(int x) //計算
int main()
printf("%d\n",count(1)); //輸出
return
0;}
SSL P2644 線段樹練習題一
題目大意 乙個n長度的桌面上有m個箱子,給出每個箱子所佔的寬度最左端,最右端 l,r 從桌子的前方射來一束平行光,把盒子的影子投射到了牆上。求影子的總寬度。資料範圍 1 n 100000,1 m 100000 1 l r n 題解 線段樹 1.建乙個線段樹,如果 a,b 區間在 l,r 區間內,並且...
SSL P2644 線段樹練習題一
桌子上零散地放著若干個盒子,桌子的後方是一堵牆。如右圖所示。現在從桌子的前方射來一束平行光,把盒子的影子投射到了牆上。問影子的總寬度是多少?2041 5387 1013 1915資料範圍 1 n 100000,1 m 100000,保證座標範圍為 1,n 一波線段樹猛如虎,再看時間 算了,看 吧 i...
SSL ZYC 2646 線段樹練習題三
題目大意 給定一條長度為m的線段,有n個操作,每個操作有3個數字x,y,z表示把區間 x,y 染成顏色z。規定 線段的顏色可以相同。連續的相同顏色被視作一段。問x軸被分成多少段。思路 這道題與 線段樹練習二 極其相似,唯一的區別在於count函式需要判斷兩根相交的線是否為同乙個顏色。include ...