線段樹 SSLOJ 2647 線段樹練習四

2021-09-26 08:45:50 字數 1239 閱讀 2106

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,如果查詢到的剛好跟插...