問題 C 校門外的樹

2021-09-25 13:45:41 字數 1136 閱讀 8210

問題

c: 校門外的樹

時間限制

: 1 sec  

記憶體限制

: 128 mb

提交: 17  

解決: 12[提交

][狀態

][討論版

][命題人

:quanxing

][edit

] [testdata]

題目描述

校門外有很多樹,如今學校決定在某個時刻在某一段種上一種樹,保證任一時刻不會出現兩段相同種類的樹。

現有兩個操作:

k=1,讀入l、

r表示在區間

[l,r]

中種上一種樹,每次操作種的樹的種類都不同

k=2,讀入

l,r表示詢問

l~r之間能見到多少種樹。

注意:每個座位都可以重複種樹。 輸入

第一行n,m表示道路總長為

n,共有

m個操作

接下來m行為m

個操作 輸出

對於每個

k=2輸出乙個答案

樣例輸入

5 4

1 1 3

2 2 5

1 2 4

2 3 5

樣例輸出

1

2

原理:這裡不是記錄點數,要把c陣列改一改,因為記錄的是線段數,需要開2個陣列去維護區間,去記錄端點,用sum尋找r前有幾個字首端點,再用sum去尋找l-1前有幾個字尾端點,減一減就為答案。

**:

#includeusing namespace std;

#define maxn 1000000

int a[maxn], c1[maxn], c2[maxn];

int n, m;

int lowbit(int t)//t轉換為二進位制後,有末尾連續0共k個,返回2^k次方

void add(int x, int y, int *c)//單點修改

}int sum(int x, int *c)//區間求和

return ans;

}int main()

else

}return 0;

}

問題 C 校門外的樹

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

校門外的樹

描述 某校大門外長度為 l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是 1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸 0的位置,另一端在 l的位置 數軸上的每個整數點,即0,1,2 l,都種有一棵樹。馬路上有一些區域要用來建地鐵,這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起...

校門外的樹

某校大門外長度為l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸0的位置,另一端在l的位置 數軸上的每個整數點,即0,1,2,l,都種有一棵樹。由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起始點和終止...