樹狀陣列 POJ 2132 Lost Cows

2021-08-25 08:31:17 字數 586 閱讀 8795

給定每頭牛前面有幾頭牛比它高,求出所有牛的最小身高(整數)

用乙個陣列b[

i]b [i

],一開始全都是1,每次查詢第ai

+1a i+

1個1即為每頭牛的身高,之後再把對應的位置佔掉

可以用樹狀陣列+二分查詢對應的位置,當然也可以用倍增+樹狀陣列快速求得

#include

#include

#include

using

namespace

std;

int n,a[8001],h[8001],c[8001],power[31],lgn,x;

inline

void add(register

int x,register

int k)//單點修改

inline

int ask(register

int x)//查詢

signed main()

for(register

int i=1;i<=n;i++) printf("%d\n",h[i]);

}

樹狀陣列POJ2155

poj 2155是一道很不錯的題目,表面上看,這題的要求似乎和樹狀陣列的使用方法恰好相反,改變的是乙個區間,查詢的反而是乙個點。實際上可以通過乙個轉化巧妙的解決。首先對於每個數a定義集合up a 表示 定義集合down a 表示。可以發現對於任何a於是對於這道題目來說,翻轉乙個區間 a,b 為了便於...

poj 2481(樹狀陣列)

這題樹狀陣列明顯可解,不解釋,但是注意有相同的奶牛的處理 include include include include define n 100005 using namespace std int c n tem struct dian d n int cmp dian a,dian b int...

poj 2481 樹狀陣列

解法2 按si值做降序排序後,相當於求每個位置i左邊大於等於e i 的個數 樹狀陣列更新節點的路徑和求和的路徑要改變,getsum i 相當於求i i 1 maxn include include using namespace std const int maxn 100010 int sum m...