線段樹練習三
給定一條長度為m
mm的線段,有n
nn個操作,每個操作有3個數字x
xx,y
yy,z
zz表示把區間[x
xx,y
yy]染成顏色z
zz,詢問染完色之後,這條長度為m
mm的線段一共有幾種顏色。規定:線段的顏色可以相同。連續的相同顏色被視作一段。問x
xx軸被分成多少段。
input
20 //四條,總長度為20
10 19 1
2 9 2
5 13 3
15 17 4
output
7樣例解釋
搜尋覆蓋
完全覆蓋標為顏色號,多種顏色標為-1
如果與前一段的顏色不一樣
段數+1
#include
#include
using namespace std;
int n,m,x,y,ans,t[2000020],now=-1,c;
void in(int d,int l,int r,int x,int y,int color)
if(x>=mid)
in(d*2+1,mid,r,x,y,color)
;else
if(y<=mid)
in(d*2,l,mid,x,y,color)
;else
//繼續找
}}void tj(int d)
return;}
tj(d*2)
; tj(d*2+1)
; //繼續搜
}int main(
) tj(1)
; cout<
return 0;
}
線段樹練習二 題解
線段樹練習二 桌子上零散地放著若干個不同顏色的盒子,桌子的後方是一堵牆。如右圖所示。問從桌子前方可以看到多少個盒子?假設人站得足夠遠 輸入時,由底向上,從左到右 16 桌子長度 5 盒子數量 4 712 14 1 56 10 11 16 output 41 n nn 100000,1 m mm 10...
線段樹練習題三 線段樹
description 給定一條長度為m的線段,有n個操作,每個操作有3個數字x,y,z表示把區間 x,y 染成顏色z,詢問染完色之後,這條長度為m的線段一共有幾種顏色。規定 線段的顏色可以相同。連續的相同顏色被視作一段。問x軸被分成多少段。第一行輸入兩個整數n,m,表示有n個操作,長度為m的線段 ...
線段樹練習題三(線段樹)
description 給定一條長度為m的線段,有n個操作,每個操作有3個數字x,y,z表示把區間 x,y 染成顏色z,詢問染完色之後,這條長度為m的線段一共有幾種顏色。規定 線段的顏色可以相同。連續的相同顏色被視作一段。問x軸被分成多少段。4 20 四條,總長度為20 10 19 1 2 9 2 ...