題目鏈結
面對螞蟻們的瘋狂進攻,小ff的tower defence宣告失敗……人類被螞蟻們逼到了greed island上的乙個海灣。現在,小ff的後方是一望無際的大海, 前方是變異了的超級螞蟻。 小ff還有大好前程,他可不想命喪於此, 於是他派遣手下最後一批改造scv布置地雷以阻擋螞蟻們的進攻。
小ff最後一道防線是一條長度為n的戰壕, 小ff擁有無數多種地雷,而scv每次可以在\([ l , r ]\)區間埋放同一種不同於之前已經埋放的地雷。 由於情況已經十萬火急,小ff在某些時候可能會詢問你在\([ l' , r']\) 區間內有多少種不同的地雷, 他希望你能盡快的給予答覆。
第一行為兩個整數\(n\)和\(m\); \(n\)表示防線長度, \(m\)表示scv布雷次數及小ff詢問的次數總和。
接下來有\(m\)行, 每行三個整數\(q\),\(l\) , \(r\); 若\(q=1\) 則表示scv在\([ l , r ]\)這段區間布上一種地雷, 若\(q=2\)則表示小ff詢問當前\([ l , r ]\)區間總共有多少種地雷。
對於小ff的每次詢問,輸出乙個答案(單獨一行),表示當前區間地雷總數。
5 41 1 3
2 2 5
1 2 4
2 3 5
1對於30%的資料: \(0<=n, m<=1000\);2
對於100%的資料: \(0<=n, m<=10^5\).
1s50m
remove!!!
求\(l\)到\(r\)之間有多少種地雷,因為放地雷都是按照區間放的,而且每次放的地雷都不相同,
那麼只要用1到\(l\)的地雷種數(也就是從1到\(l\)開始放置地雷的個數)再減去1到\(r-1\)已經放置結束了的地雷(也就是放置地雷時的\(r\))種數就是答案了。
接下來就簡單了,用兩個樹狀陣列維護兩個字首和就好了。
上**:
#includeusing namespace std;
int n,m;
int q,l,r;
int a1[100009],a2[100009];
int lb(int x)
void add1(int x)
}void add2(int x)
}int ask1(int x)
return ans;
}int ask2(int x)
return ans;
}int main()
else if(q==2) printf("%d\n",ask1(r)-ask2(l-1));
}return 0;
}
貪婪大陸(洛谷P2184)
題目背景 面對螞蟻們的瘋狂進攻,小ff的tower defence宣告失敗 人類被螞蟻們逼到了greed island上的乙個海灣。現在,小ff的後方是一望無際的大海,前方是變異了的超級螞蟻。小ff還有大好前程,他可不想命喪於此,於是他派遣手下最後一批改造scv布置地雷以阻擋螞蟻們的進攻。題目描述 ...
洛谷 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布置地雷...