洛谷 P3616 富金森林公園

2022-03-18 04:02:02 字數 841 閱讀 7322

題鏈:

題解:

樹狀陣列,,,

本題思路挺巧妙。

考慮這種暴力演算法:(設h[i]為i位置的高度,水面的高度為b)

從左列舉到右,如果 h[i-1]

基於上述暴力,可以得出:

如果 h[i-1] < h[i],且詢問的 b 在這兩個h值之間,則會貢獻答案。

所以,用資料結構維護區間修改(把區間h[i-1]+1~h[i]的值加一)和單點查詢(查詢當前的水面高度b的ans)即可。

**:

#include#include#include#include#define maxn 200500

using namespace std;

int h[maxn],tmp[maxn*3];

int n,m,tnt;

struct questionq[maxn];

struct bit

int lowbit(int x)

void modify(int l,int r,int x)

int query(int p)

}dt;

int main()

sort(tmp+1,tmp+tnt+1);

tnt=unique(tmp+1,tmp+tnt+1)-tmp-1;

dt.reset(tnt); h[0]=lower_bound(tmp+1,tmp+tnt+11,h[0])-tmp;

for(int i=1;i<=n;i++)

for(int i=1;i<=m;i++)

else

} return 0;

}

洛谷P3616 富金森林公園

博艾的富金森林公園裡有乙個長長的富金山脈,山脈是由一塊塊巨石並列構成的,編號從1到n。每乙個巨石有乙個海拔高度。而這個山脈又在乙個盆地中,盆地裡可能會積水,積水也有乙個海拔高度,所有嚴格低於這個海拔高度的巨石,就會在水面下隱藏。由於地殼運動,巨石的海拔高度可能會隨時變化,每次一塊的巨石會變成新的海拔...

樹狀陣列 洛谷 P3616 富金森林公園

達成成就 noip題想不出!我是怎麼做到想去寫cdq分治加並查集的 還寫不出來 資料結構學傻系列 其實是noip題 這樣的話高度一樣怎麼辦 我們把乙個高度放大成乙個高度區間就可以避免有相同數字了 include include include using namespace std inline c...

洛谷 P3616 富金森林公園 樹狀陣列

傳送門 維護乙個山脈,單點修改,查詢有多少山峰高出水面 我是沙茶沙茶題都不會做只想到無修改可以用掃瞄線 答案就是所有比水面高的 相鄰都比水面高的啊 因為沒有區間詢問寫個 bit 都可以 有區間詢問?可以考慮主席樹吧 include include include include using name...