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...