csu2107 千萬別用樹套樹 權值線段樹 2

2021-09-27 13:49:11 字數 1273 閱讀 1552

問題描述

bobo 精通資料結構!他想維護乙個線段的集合 s。初始時,s 為空。他會依次進行 q 次操作,操作有 2 種。

型別 1:給出 l, r,向集合 s 中插入線段 [l, r].

型別 2:給出 l, r,詢問滿足 [x, y]∈s 且 x ≤ l ≤ r ≤ y 的線段 [x, y] 數量。

幫 bobo 求出每次詢問的答案。

1 ≤ n, q ≤ 105

ti ∈ 

1 ≤ li ≤ ri ≤ n

對於 ti = 2 的操作,ri − li ≤ 2 成立。

資料組數不超過 10.

input

輸入檔案包含多組資料,請處理到檔案結束。

每組資料的第一行包含 2 個整數 n 和 q. 其中 n 表示操作中 r 的最大值。

接下來 q 行中的第 i 行包含 3 個整數 ti, li, ri,表示第 i 個操作屬於型別 ti,對應的引數是 li 和 ri.

output

對於每個型別 2 的詢問,輸出 1 個整數表示對應的數量。

sample input

1 21 1 1

2 1 1

4 41 1 4

2 2 3

1 1 4

2 2 3

sample output11

2思路:

開兩棵權值線段樹

一棵維護區間左端點l的數量

一棵維護區間右端點r的數量

查詢的時候,答案就是:

總區間數量 - 左端點大於l的區間數量 - 右端點小於r的區間數量

code:

#include

#include

#include

#include

#include

using

namespace std;

const

int maxm=

1e5+5;

struct tree

void

update

(int x,

int l,

int r,

int node)

intask

(int st,

int ed,

int l,

int r,

int node)

}t1,t2;

int n,q;

signed

main()

else}}

return0;

}

csu2170千萬別用樹套樹

千萬別用樹套樹 bobo 精通資料結構!他想維護乙個線段的集合 s。初始時,s 為空。他會依次進行 q 次操作,操作有 2 種。幫 bobo 求出每次詢問的答案。輸入檔案包含多組資料,請處理到檔案結束。每組資料的第一行包含 2 個整數 n 和 q.其中 n 表示操作中 r 的最大值。接下來 q 行中...

樹狀陣列 千萬別用樹套樹

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k special judge,64bit io format lld 題目描述 bobo 精通資料結構!他想維護乙個線段的集合 s。初始時,s 為空。他會依次進行 q 次操作,操作有 2 種。輸入檔案包含多組資...

樹狀陣列 H千萬別用樹套樹

解題思路 兩棵bit分別存線段的開始點和結束點 兩個陣列存開始點和結束點的線段數量 針對每次詢問 用匯流排段數 區間右邊的線段 結尾小於等於x 區間左邊的線段 開頭大於等於x 當前線段內被完全包含 開頭結尾在當前區間內即為答案 zeolim an ac a day keeps the bug awa...