洛谷P2184貪婪大陸 題解

2021-10-06 07:27:40 字數 1846 閱讀 7238

輸入輸出樣例

資料範圍

解析**

題目鏈結

面對螞蟻們的瘋狂進攻,小ff的tower defence宣告失敗……人類被螞蟻們逼到了greed island上的乙個海灣。現在,小ff的後方是一望無際的大海, 前方是變異了的超級螞蟻。 小ff還有大好前程,他可不想命喪於此, 於是他派遣手下最後一批改造scv布置地雷以阻擋螞蟻們的進攻。

小ff最後一道防線是一條長度為n的戰壕, 小ff擁有無數多種地雷,而scv每次可以在[l,

r]

[ l , r ]

[l,r

]區間埋放同一種不同於之前已經埋放的地雷。 由於情況已經十萬火急,小ff在某些時候可能會詢問你在[l′

,r′]

[ l' , r']

[l′,r′

] 區間內有多少種不同的地雷, 他希望你能盡快的給予答覆。

第一行為兩個整數n

nn和mmmn

nn表示防線長度,m

mm表示scv布雷次數及小ff詢問的次數總和。

接下來有m行, 每行三個整數q,l

,r

q,l , r

q,l,

r;若q=1

q=1q=

1則表示scv在[l,r]這段區間布上一種地雷,若q=2

q=2q=

2則表示小ff詢問當前[l,r]區間總共有多少種地雷。

對於小ff的每次詢問,輸出乙個答案(單獨一行),表示當前區間地雷總數。

5 4

1 1 3

2 2 5

1 2 4

2 3 5

1

2

對於30%的資料:0≤n

,m

≤1000

0 \le n, m \le 1000

0≤n,m≤

1000

;對於100%的資料:0≤n

,m≤1

05

0\le n, m \le10^5

0≤n,m≤

105。

求l

ll到r

rr之間有多少種地雷,因為放地雷都是按照區間放的,而且每次放的地雷都不相同,

那麼只要用1

11到l

ll的地雷種數(也就是從1

11到l

ll開始放置地雷的個數)再減去1

11到r−1

r−1r−

1已經放置結束了的地雷(也就是放置地雷時的r

rr)種數就是答案了。

接下來就簡單了,用兩個樹狀陣列維護兩個字首和就好了。

#include

using

namespace std;

int n,m;

int q,l,r;

const

int maxn=

100010

;int ar1[maxn]

,ar2[maxn]

;int

lowbit

(int x)

void

update1

(int x)

}void

update2

(int x)

}int

ask1

(int x)

return ans;

}int

ask2

(int x)

return ans;

}int

main()

else

}return0;

}

好了,我今天講的內容結束了。您有什麼問題可以來問我,我的blog有問題您也可以來提醒我改正

貪婪大陸(洛谷P2184)

題目背景 面對螞蟻們的瘋狂進攻,小ff的tower defence宣告失敗 人類被螞蟻們逼到了greed island上的乙個海灣。現在,小ff的後方是一望無際的大海,前方是變異了的超級螞蟻。小ff還有大好前程,他可不想命喪於此,於是他派遣手下最後一批改造scv布置地雷以阻擋螞蟻們的進攻。題目描述 ...

洛谷P2184 貪婪大陸

題目鏈結 面對螞蟻們的瘋狂進攻,小ff的tower defence宣告失敗 人類被螞蟻們逼到了greed island上的乙個海灣。現在,小ff的後方是一望無際的大海,前方是變異了的超級螞蟻。小ff還有大好前程,他可不想命喪於此,於是他派遣手下最後一批改造scv布置地雷以阻擋螞蟻們的進攻。小ff最後...

洛谷 P2184 貪婪大陸

題面 又是一模擬較套路的題呢?假如我們的地雷都表示成 l i r i 要求 l,r 那麼就相當於要求滿足 l i r r i l 的i的個數。直接求不太好求,看起來又不太能容斥?別忘了 l i r i l r 是隱藏條件,於是我們可以得出 滿足 l i r r i l 的i的個數 就是 l i r ...