Lost Cows 樹狀陣列

2021-09-26 11:51:20 字數 581 閱讀 8209

n頭牛,給出每頭牛前面有幾個編號比其小的,求出該序列。

倒著看,假設最後乙個數前面有i個比它小的,那麼它就是第i+1個數,接著將第i+1個數從這n個數中剔除,假設倒數第二個數前面有j個比它小的,那麼它就是剩下的數中第j+1個數,以此類推,二分查詢樹狀陣列即可。

#include #include #include #include using namespace std;

const int n = 8005;

int n, a[n], ans[n], c[n];

int lowbit(int x)

void updata(int x, int w)

}int ask(int x)

return sum;

}int er(int k)

return l;

}int main()

for(int i = n; i >= 1; i --)

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

printf("%d\n", ans[i]);

} return 0;

}

POJ 2182 Lost Cows(樹狀陣列)

用c i 來表示 i lowbit i 1,i 區間內有多少個位置,接著二分查詢num i 1的位置,接著在相關區間內減去乙個位置 這步尤為重要,關乎前面能否查詢到正確的位置 main.cpp richard created by 邵金傑 on 16 8 20.include include inc...

樹狀陣列 POJ 2132 Lost Cows

給定每頭牛前面有幾頭牛比它高,求出所有牛的最小身高 整數 用乙個陣列b i b i 一開始全都是1,每次查詢第ai 1a i 1個1即為每頭牛的身高,之後再把對應的位置佔掉 可以用樹狀陣列 二分查詢對應的位置,當然也可以用倍增 樹狀陣列快速求得 include include include usi...

資料結構 樹狀陣列 lost cows

這道題可以巧妙地利用二分和樹狀陣列在題目要求下完成以下操作 1 找到序列中第k大的數 2 修改乙個數.這個操作一看需要平衡樹完成,這題利用樹狀陣列和二分完全可以.題目 lost cows 做法 樹狀陣列 二分 1 倒序看身高,如果第 i ii 頭牛可以看到 x xx 頭牛,那麼它在剩下的 i ii ...