SSLGZ 線段樹練習題三

2021-08-28 03:18:20 字數 784 閱讀 7077

給定一條長度為m的線段,有n個操作,每個操作有3個數字x,y,z表示把區間[x,y]染成顏色z,詢問染完色之後,這條長度為m的線段一共有幾種顏色。規定:線段的顏色可以相同。連續的相同顏色被視作一段。問x軸被分成多少段。

4 20 //四條,總長度為20

10 19 1

2 9 2

5 13 3

15 17 4

資料規模

n <= 100000

m <= 1000000

我以前寫的線段樹都是假的!!(改了我2個中午)

對於每一段,維護乙個左節點,乙個右節點,表示每一段左右端的顏色

#include

#include

#include

using namespace std;

int n,m,a[1000077

*3],c,d;

void ins(int st,int ed,int l,int r,int c,int u)

}}int query(int l,int r,int u,int &lc,int &rc)

if(l==r) return

1; int mid=(l+r)>>1,s=query(l,mid,u*2,lc,lt)+query(mid+1,r,u*2+1,rt,rc);

return

s-(lt==rt?1:0);

}int main()

printf("%d",query(1,n,1,c,d));

}

SSLGZ 2645 線段樹練習題二

問題描述 桌子上零散地放著若干個不同顏色的盒子,桌子的後方是一堵牆。如右圖所示。問從桌子前方可以看到多少個盒子?假設人站得足夠遠 輸入時,由底向上,從左到右 樣例輸入 16 桌子長度 5 盒子數量 4 7 12 14 1 5 6 10 11 16 樣例輸出 4演算法討論 構建線段樹,我們定義區間標記...

線段樹練習題三

time limit 10000ms memory limit 65536k total submit 143 accepted 45 case time limit 1000ms description 給定一條長度為m mm的線段,有n nn個操作,每個操作有3 33個數字x,y z x,y,z...

線段樹 線段樹練習題三

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