luogu P2184 貪婪大陸

2021-07-16 07:30:47 字數 566 閱讀 2025

題目傳送門:233333

本題由萌萌噠的我的同桌推薦(woc為毛bzoj自爆了

詢問區間[l,r],就是求出l點此時的地雷數+[l+1,r]中新加的地雷數

l點地雷數=[1,l]的左端點數減去[1,l-1]的右端點數

[l+1,r]中新加的地雷數=[l+1,r]的左端點數

所以詢問[l,r]就是[1,r]的左端點數-[1,l-1]的右端點數

非要打線段樹也不是不可以(就像我萌萌噠的同桌

#include #include #include #include #define rep(j,k,l) for (int j=k;j<=l;j++)

#define n 100000

using namespace std;

int n,t,a[4*n],b[4*n];

int main()

while (y<=n)

}else

while (y>0)

printf("%d\n",ans);}}

system("pause");

}

luoguP2184 貪婪大陸

當詢問區間 l,r 中地雷種類數時,我們只需要用 r 前面的區間開頭數量減去 l 前面的區間結尾數量即可.原因很簡單.對於詢問區間 l,r 我們要求它與先前埋下的地雷區間有交的區間數量,所以只要區間 l,r 的 l去掉不合法的 r即滿足要求.所以這個題我們可以使用兩個樹狀陣列來解決.tree 0 維...

luogu P2184 貪婪大陸

嘟嘟嘟 這真是一道好題啊 看起來覺得似曾相識,但就是想不出來區間怎麼合併,最後還是聽lbg巨佬講的 高能演算法 連線段樹都不用,樹狀陣列就行了。對於修改區間 l,r 分別用樹狀陣列cl,cr維護l和r的字首和。統計的時候就是cl r cr l 1 理解起來就是先找出所有在r之前被修改的區間,然後在減...

luoguP2184 貪婪大陸 題解 樹狀陣列

p2184 貪婪大陸 題目 其實很容易理解就是詢問一段區間內有多少段不同的區間 然後再仔細思索一下會發現 1.只要乙個區間的開頭在乙個節點i的左邊,那麼這個區間包含在區間1 i中。2.只要乙個區間的尾部在乙個節點j的左邊,那麼這個區間肯定不屬於j之後的所有區間 這時候就不難想到用兩個樹狀陣列維護 第...