貪婪大陸(洛谷P2184)

2021-09-26 14:31:53 字數 2517 閱讀 8890

題目背景

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

題目描述

小ff最後一道防線是一條長度為n的戰壕, 小ff擁有無數多種地雷,而scv每次可以在[ l , r ]區間埋放同一種不同於之前已經埋放的地雷。 由於情況已經十萬火急,小ff在某些時候可能會詢問你在[ l』 , r』] 區間內有多少種不同的地雷, 他希望你能盡快的給予答覆。

對於30%的資料: 0<=n, m<=1000;

對於100%的資料: 0<=n, m<=10^5.

輸入格式

第一行為兩個整數n和m; n表示防線長度, m表示scv布雷次數及小ff詢問的次數總和。

接下來有m行, 每行三個整數q,l , r; 若q=1 則表示scv在[ l , r ]這段區間布上一種地雷, 若q=2則表示小ff詢問當前[ l , r ]區間總共有多少種地雷。

輸出格式

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

輸入 #1

5 4

1 1 3

2 2 5

1 2 4

2 3 5

輸出 #1

1

2

這道題的地雷是不被覆蓋的,不是區間染色類的題目;剛開始還想維護區間地雷種類和,修改時直接區間加1就行,太天真了;這道題要用線段樹的話要結合字首和的思想;貼張圖

如圖,當要查詢區間的地雷數時只要知道這個區間尾結點到1包含了多少個區間開頭(就是紅色三角形)sum1,這個區間的首結點的前乙個到1包含了多少個區間結尾(綠色三角形)sum2;然後這個區間的地雷種類數為sum2-sum1;這就是一道單點修改,區間查詢的線段樹了;具體看**;

sum1代表的就是這個區間結束前有幾個區間埋雷了,sum2代表這個區間開始前有幾個區間就已經終點了;

**:

#include

using namespace std;

int q,x,y,sum1,sum2;

struct nodetree[

400100];

inline

void

build

(int k,

int ll,

int rr)

inline

void

change1

(int k)

int m=

(tree[k]

.l+tree[k]

.r)>>1;

if(x<=m)

change1

(k<<1)

;else

change1

(k<<1|

1); tree[k]

.sw=tree[k<<1]

.sw+tree[k<<1|

1].sw;

}inline

void

change2

(int k)

int m=

(tree[k]

.l+tree[k]

.r)>>1;

if(y<=m)

change2

(k<<1)

;else

change2

(k<<1|

1); tree[k]

.ew=tree[k<<1]

.ew+tree[k<<1|

1].ew;

}inline

void

ask1

(int k)

int m=

(tree[k]

.l+tree[k]

.r)>>1;

if(x<=m)

ask1

(k<<1)

;if(y>m)

ask1

(k<<1|

1);}

inline

void

ask2

(int k)

int m=

(tree[k]

.l+tree[k]

.r)>>1;

if(x<=m)

ask2

(k<<1)

;if(y>m)

ask2

(k<<1|

1);}

intmain()

else

}return0;

}

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

洛谷P2184貪婪大陸 題解

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