線段樹練習二
桌子上零散地放著若干個不同顏色的盒子,桌子的後方是一堵牆。如右圖所示。問從桌子前方可以看到多少個盒子?假設人站得足夠遠(輸入時,由底向上,從左到右)。
16 //桌子長度
5 // 盒子數量
4 712 14
1 56 10
11 16
output
41<=n
nn<=100000,1<=m
mm<=100000,保證座標範圍為[1,n
nn].
#include
#include
using namespace std;
int n,m,x,y,ans,t[500020],f[100010]
;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,int l,int r)
int main(
) tj(1,1,n)
;for
(int i=1;i<=n;i++)
ans+=f[i]
; //累加個數
cout<
return 0;
}
線段樹練習三 題解
線段樹練習三 給定一條長度為m mm的線段,有n nn個操作,每個操作有3個數字x xx,y yy,z zz表示把區間 x xx,y yy 染成顏色z zz,詢問染完色之後,這條長度為m mm的線段一共有幾種顏色。規定 線段的顏色可以相同。連續的相同顏色被視作一段。問x xx軸被分成多少段。inpu...
線段樹練習題二 線段樹
description 桌子上零散地放著若干個不同顏色的盒子,桌子的後方是一堵牆。如右圖所示。問從桌子前方可以看到多少個盒子?假設人站得足夠遠 輸入時,由底向上,從左到右 第一行輸入乙個整數n,表示桌面總寬度 第二行輸入乙個整數m,表示盒子數量 接下來m行,每行輸入兩個數x,y,表示第i個盒子的起始...
線段樹 題解
nyoj 1068 題目鏈結 題目意思 典型的線段樹,插線問線.不過多了乙個,a 操作某乙個區間乙個數整體加上乙個數 s 操作查詢某乙個區間的總和,q 操作,查詢這個區間有多少個奇數.下面是 線段樹延遲更新,奇數的個數更新時注意 如果變化的是奇數,那麼 現在區間奇數個數 區間長度 原本區間的奇數個數...