ZOJ 1610 (線段樹區間set)

2021-08-25 22:09:42 字數 1081 閱讀 5760

題意:

在一段線段上塗色,新塗的顏色會覆蓋舊的,問最後每種顏色各有多少段。

思路:線段樹區間覆蓋,最後dfs查詢一遍把每個位置的顏色查詢出來,再掃一遍統計有多少段。

**:#include #include  #include   #include   #include   #include   #include    #include    #include    #include    #include     #include     #include     #include     #include      #include       #include       #define x first

#define y second

#define lch (o<<1)

#define rch (o<<1|1)

#define pb push_back

#define lowbit(x) (x&-x)

#define pii pair#define sd(n) scanf("%d",&n)

#define sf(n) scanf("%lf",&n)

#define cout1(x) cout<#define all(x) x.begin(),x.end()

#define sdd(n,m) scanf("%d%d",&n,&m)

#define ins(x) inserter(x,x.begin())

#define mst(a,b) memset(a,b,sizeof(a))

#define sff(n,m) scanf("%lf%lf",&n,&m)

#define cout2(x,y) cout<>1;

if(ql<=mid)update(lch,l,mid,ql,qr,val);

if(mid>1;

query(lch,l,mid);

query(rch,mid+1,r);

}return ;

}void solve() {

while(~sd(n)){

mst(setv,-1);

int lim=8003;

for(int i=0;i

ZOJ 1610 線段樹區間染色

給長度8000公尺的板,對其中區間染色,問最後能看到的顏色,和該顏色一共出現了幾段 線段覆蓋法 資料比較水 也可以暴力水過 線段樹 include stdio.h include string.h struct node data 40010 int color 8011 void build in...

ZOJ 1610 線段樹區間更新

裸題。注意到只有一次查詢,那麼查詢的時候直接到葉子節點將葉子節點的值放到陣列中,統計結果相當於離散化的乙個過程。對於這道題來說我們進行區間更新不需要像普通的那種求區間和的那樣建立lazy標記,因為我們最後只關心葉子節點的值,故不需要lazy標記。注意的地方,區間長度為 1,8000 在這個區間上進行...

ZOJ 1610 思維 線段樹

zoj 1610 思維 include include using namespace std const int maxn 1e4 int n int e maxn 3 int color maxn int ans maxn int main for int i 1 i 8000 i 遍歷每乙個位...