SSL ZYC 2646 線段樹練習題三

2021-08-19 20:47:41 字數 950 閱讀 6779

題目大意:

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

思路:這道題與 線段樹練習二 極其相似,唯一的區別在於count函式需要判斷兩根相交的線是否為同乙個顏色。

**:

#include 

using namespace std;

int n,m,x,y,z,sum;

struct n

tree[300001];

void makes(int

x) //建樹,完全沒變

void insert(int

x,int col,int l,int r) //插入,基本沒變

if (tree[x].cover>=0)

int mid=(tree[x].l+tree[x].r)/2;

if (mid>=r)

if (mid<=l)

insert(x

*2,col,l,mid);

insert(x

*2+1,col,mid,r);

}void count(int

x,int &l,int &r) //計算,基本都變了

if (tree[x].r==tree[x].l+1) return;

count(x

*2,l,ll);

count(x

*2+1,rr,r);

if (ll==rr&&ll) sum--; //兩條線段同一顏色

return;

}int main()

int ak,ac;

count(1,ak,ac);

printf("%d\n",sum);

return

0;}

SSL ZYC 2646 線段樹練習題三

題目大意 給定一條長度為m的線段,有n個操作,每個操作有3個數字x,y,z表示把區間 x,y 染成顏色z。規定 線段的顏色可以相同。連續的相同顏色被視作一段。問x軸被分成多少段。思路 這道題與 線段樹練習二 極其相似,唯一的區別在於count函式需要判斷兩根相交的線是否為同乙個顏色。include ...

SSLGZ 2646 線段樹練習三

問題描述 給定一條長度為m的線段,有n個操作,每個操作有3個數字x,y,z表示把區間 x,y 染成顏色z,詢問染完色之後,這條長度為m的線段一共有幾種顏色。規定 線段的顏色可以相同。連續的相同顏色被視作一段。問x軸被分成多少段。樣例輸入 4 20 四條,總長度為20 10 19 1 2 9 2 5 ...

SSL P2646 線段樹練習題三

給定一條長度為m的線段,有n個操作,每個操作有3個數字x,y,z表示把區間 x,y 染成顏色z,詢問染完色之後,這條長度為m的線段一共有幾種顏色。規定 線段的顏色可以相同。連續的相同顏色被視作一段。問x軸被分成多少段。資料規模 n 10000 m 1000000 這道題 算了,多好看 include...