校門外的樹
time limit:10000ms memory limit:65536k
total submit:66 accepted:27
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%的資料保證,n,m<=100
60%的資料保證,n <=1000,m<=50000
100%的資料保證,n,m<=50000
其實就是只一段區間記錄它的「head」,「tail」
若你要查詢』[x,y]'中樹的總種數,則就可以轉化為
『 y』
左邊有多
少個『[
x1,y
1]』的
『x1』
−′x′
左邊有多
少『[x
1,y1
]』的『
y1』『~y~』左邊有多少個『~[x^1~,y^1~]~』的『~x^1~』~-~'~x~'左邊有多少『~[x^1~,y^1~]~』的『~y^1~』
『y』左邊有
多少個『
[x1,
y1]』
的『x1
』−′x
′左邊有
多少『[
x1,y
1]』的
如圖:要查詢「5~11」這個區間
則 『 y』
左邊有多
少個『[
x1,y
1]』的
『x1』
『~y~』左邊有多少個『~[x^1~,y^1~]~』的『~x^1~』
『y』左邊有
多少個『
[x1,
y1]』
的『x1
』指的是
圈起來的點,就是這段區間的顏色總種數,也就是一條線段『 [1,y] 』的左端的個數
…………你細品……細品……
而′ 左邊
有多少『
[x1,
y1]』
的『y1
』'左邊有多少『~[x^1~,y^1~]~』的『~y^1~』
′左邊有多少
『[x1
,y1]
』的『y
1』指的是:
…………你細品……細品……
#include
#include
#include
#include
#include
#include
#include
#define ll long long
using
namespace std;
const
int n=
1e6+
100,m=
32005
;int n,m,s,x,y,a[n]
,c[n]
,d[n]
;//c存左端點,d存右端點
int add (
int x)
void put1 (
int x,
int y)
void put2 (
int x,
int y)
//ctrl+v
int find1 (
int x)
int find2 (
int x)
//ctrl+v
int main (
)return0;
}
校門外的樹
描述 某校大門外長度為 l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是 1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸 0的位置,另一端在 l的位置 數軸上的每個整數點,即0,1,2 l,都種有一棵樹。馬路上有一些區域要用來建地鐵,這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起...
校門外的樹
某校大門外長度為l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸0的位置,另一端在l的位置 數軸上的每個整數點,即0,1,2,l,都種有一棵樹。由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起始點和終止...
校門外的樹
校門外的樹 題目描述 某校大門外長度為l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸0的位置,另一端在l的位置 數軸上的每個整數點,即0,1,2,l,都種有一棵樹。由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知...