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 ...