桌子上零散地放著若干個盒子,盒子都平行於牆。桌子的後方是一堵牆。如圖所示。現在從桌子的前方射來一束平行光,把盒子的影子投射到了牆上。問影子的總寬度是多少?
第1行:3個整數l,r,n。-100000 <=l<=r<= 100000,表示牆所在的區間;1<=n<=100000,表示盒子的個數
接下來n行,每行2個整數bl, br,-100000 <=bl<=br<= 100000,表示乙個盒子的左、右端點
輸出僅為乙個整數w,表示影子的總寬度。
1 10 3
3 5
1 4
7 8
統計標記個數(區間修改區間查詢)
data直接置1不管懶標記
queryleft~right隨便亂查
注意要加偏移量
因為c++的負數向0取整,會導致堆式編號出錯
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
inline const int get_int()
while(x>='0'&&x<='9')
return num*bj;
}const int maxn=600000;
struct tree ;
struct segment_tree
void modify(int
index,int left,int right)
modify(index*2,left,right);
modify(index*2+1,left,right);
}void init()
void query(int
index,int left,int right)
query(index*2,left,right);
query(index*2+1,left,right);
}};segment_tree st;
int left,right,n,delta;
int main()
st.init();
st.query(1,left,right);
printf("%d\n",st.sum);
return
0;}
線段樹練習3 盒子的個數 統計標記種類
桌子上零散地按照後先後順序放著若干個盒子,盒子都平行於牆。桌子的後方是一堵牆。如圖所示。問從桌子前方可以看到多少個盒子?假設人站得足夠遠。第1行 3個整數l,r,n。100000 l r 100000,表示牆所在的區間 1 n 100000,表示盒子的個數 接下來n行,每行2個整數bl,br,100...
4927 線段樹練習5 多重標記
時間限制 1 s 空間限制 128000 kb 題目等級 gold 題解檢視執行結果 有n個數和5種操作 add a b c 把區間 a,b 內的所有數都增加c set a b c 把區間 a,b 內的所有數都設為c sum a b 查詢區間 a,b 的區間和 max a b 查詢區間 a,b 的最...
codevs 1081 線段樹練習 2 線段樹
題目描述 description 給你n個數,有兩種操作 1 給區間 a,b 的所有數都增加x 2 詢問第i個數是什麼?輸入描述 input description 第一行乙個正整數n,接下來n行n個整數,再接下來乙個正整數q,表示操作的個數.接下來q行每行若干個整數。如果第乙個數是1,後接3個正整...