ssl
oj
ssloj
sslo
j2647
2647
2647
在平面內有一條長度為n的線段(也算一條線段),可以對進行以下2種操作:
1 x y 把從x到y的再加一條線段
2 x 查詢從x到x+1有多少條線段
第一行輸入n,m
第2~m+1行,每行3個數
對於每個查詢操作,輸出線段數目
7 2
2 53 6
4 5
2
【資料規模】
100%滿足1≤n≤100000,1≤x≤y≤n
就統計每乙個區間有多少線段覆蓋就好了吧
#include
#include
using
namespace std;
int ans, n, m;
struct tree
tree[
400005];
void
build
(int x,
int l,
int r)
//建樹就不用多說了吧
void
ins(
int x,
int l,
int r)
//記錄當前區間被多少條線段剛好覆蓋
int mid =
(tree[x]
.l + tree[x]
.r)>>1;
if(r <= mid)
ins(x *
2, l, r)
;else
if(l >= mid)
ins(x *2+
1, l, r)
;else
}int
print
(int x)
return ans;
}//統計答案
intcount
(int x,
int l,
int r)
}int
main()
scanf
("%d%d"
,&x,
&y);
printf
("%d"
,count(1
, x, y));
return0;
}
2647 線段樹題練習四
x軸上有若干條不同線段,問某個單位區間 x,x 1 上重疊了多少條線段?區間大小不超過100000 每行表示一條線段x,y 最後一行表示x,x 1 題庫上的輸入樣例和資料的輸入完全不同!只好用eoln來讀入,而且資料中會出現x y!最後打出乙個線段樹 每乙個區間記錄乙個c,表示這整個區間有多少條線段...
SSLGZ 2647 線段樹練習四
問題描述 在平面內有一條長度為n的線段 也算一條線段 可以對進行以下2種操作 1 x y 把從x到y的再加一條線段 2 x 查詢從x到x 1有多少條線段 輸入 第一行兩個數n,m 表示長度為n的線段 接下來的m行讀入x,y 表示在 x,y 的區間中加入一條線段 最後一行兩個數x,y 輸出x到y這乙個...
SSL P2647 線段樹練習四
題目大意 在長為n的線段中 這條線段不算 加入m條線段 x,y 最後查詢某個線段 x,y 保證y x 1。1 n,m 100000,1 x y n 題解 就是乙個線段樹 lazy 1.每次走的時候因為如果你二分到這乙個區間就代表你插入的線段一定經過這個區間,這個區間的線段數 1,如果查詢到的剛好跟插...