校門外的樹 樹狀陣列

2021-10-09 06:50:57 字數 1681 閱讀 2626

time limit:10000ms memory limit:65536k

total submit:55 accepted:20

case time limit:1000ms

description

校門外有很多樹,有蘋果樹,香蕉樹,有會扔石頭的,有可以吃掉補充體力的……

如今學校決定在某個時刻在某一段種上一種樹,保證任一時刻不會出現兩段相同種類的樹,現有兩個操作:

k=1,讀入l,r表示在l~r之間種上的一種樹

k=2,讀入l,r表示詢問l~r之間能見到多少種樹

(l,r>0)

input

第一行n,m表示道路總長為n,共有m個操作

接下來m行為m個操作

output

對於每個k=2輸出乙個答案

sample input

5 41 1 3

2 2 5

1 2 4

2 3 5

sample output12

hint

範圍:20

2020

%的資料保證,n,m

<

=100

n,m<=100

n,m<=1

0060

6060

%的資料保證,n

<

=1000,m

<

=50000

n <=1000,m<=50000

n<=1

000,

m<=5

0000

100

10010

0%的資料保證,n,m

<

=50000

n,m<=50000

n,m<=5

0000

解題思路

題目可以看做求乙個括號序列

[ x,

y]

[x,y]

[x,y

]中有多少對括號=y=y

=y之前有多少左括號−x-x

−x之前有多少右括號

解釋一蝦:y

yy之前有多少左括號可以求出[1,

y]

[1,y]

[1,y

]有多少種樹,x

xx之前的左括號把x

xx之前的右括號匹配掉,所以減去左括號

**

#include

#include

#include

#include

#include

using namespace std;

int n,m,x,y,a,tree[

500010

],tree1[

500010];

int find

(int x)

int find1

(int x)

void

add1

(int x)

void

add(int x)

int main()

}

樹狀陣列 校門外的樹

樹狀陣列 校門外的樹 時間限制 1 sec 記憶體限制 128 mb 題目描述 校門外有很多樹,有蘋果樹,香蕉樹,有會扔石頭的,有可以吃掉補充體力的 如今學校決定在某個時刻在某一段種上一種樹,保證任一時刻不會出現兩段相同種類的樹,現有兩個操作 k 1,k 1,讀入l r表示在區間 l,r 中種上一種...

校門外的樹(樹狀陣列)

description 校門外有很多樹,有蘋果樹,香蕉樹,有會扔石頭的,有可以吃掉補充體力的 如今學校決定在某個時刻在某一段種上一種樹,保證任一時刻不會出現兩段相同種類的樹,現有兩個操作 k 1,讀入l,r表示在l r之間種上的一種樹 k 2,讀入l,r表示詢問l r之間能見到多少種樹 l,r 0 ...

校門外的樹 (樹狀陣列)題解

校門外的樹 校門外有很多樹,有蘋果樹,香蕉樹,有會扔石頭的,有可以吃掉補充體力的 如今學校決定在某個時刻在某一段種上一種樹,保證任一時刻不會出現兩段相同種類的樹,現有兩個操作 k kk 1,讀入l ll,r rr表示在l ll r rr之間種上的一種樹 k kk 2,讀入l ll,r rr表示詢問l...