線段樹練習3

2021-08-19 21:49:12 字數 827 閱讀 4830

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

【線段樹】

cover=-1表示該區間由多種顏色組成。cover>=0表示該區間只有一種單一的顏色cover。

和線段樹練習2差不多

只是要判斷連線在一起的線段顏色是否相同

#includeusing namespace std;

struct nodea[1000001];

int x1,y1,l,n;

void insert(int i,int l,int r,int b,int e,int

color)

//插入演算法(和線段樹練習2一樣)

if (e<=mid) insert(i*2,l,mid,b,e,color);

else

if (b>=mid) insert(i*2+1,mid,r,b,e,color);

else }}

}int count_answer(int i,int l,int r,int &x,int &y)

//統計演算法

else

if (r-l>1)

//不然就只有多種顏色

//但區間表示的範圍必須大於1

return

0;

}int main()

int lc=0,rc=0;

printf("%d",count_answer(1,1,l,lc,rc));

return

0;}

Codevs P1082 線段樹練習3 線段樹

題目描述 description 給你n個數,有兩種操作 1 給區間 a,b 的所有數增加x 2 詢問區間 a,b 的數的和。輸入描述 input description 第一行乙個正整數n,接下來n行n個整數,再接下來乙個正整數q,每行表示操作的個數,如果第乙個數是1,後接3個正整數,表示在區間 ...

線段樹練習

一鍵挖礦 includeusing namespace std define n 2000010 define int long long define f x x 1 x 3 int n,m,tg n x n y n tx 4 ty 4 ans vectorv n struct vac n va ...

codevs 1082 線段樹練習 3

1082 線段樹練習 3 區間修改,區間查詢 時間限制 3 s 空間限制 128000 kb 題目等級 大師 master 給你n個數,有兩種操作 1 給區間 a,b 的所有數增加x 2 詢問區間 a,b 的數的和。輸入描述 input description 第一行乙個正整數n,接下來n行n個整數...