時/空限制:1s / 64mb
有n頭奶牛,已知它們的身高為 1~n 且各不相同,但不知道每頭奶牛的具體身高。
現在這n頭奶牛站成一列,已知第i頭牛前面有aiai頭牛比它低,求每頭奶牛的身高。
輸入格式
第1行:輸入整數n。
第2..n行:每行輸入乙個整數aiai,第i行表示第i頭牛前面有aiai頭牛比它低。
(注意:因為第1頭牛前面沒有牛,所以並沒有將它列出)
輸出格式
輸出包含n行,每行輸出乙個整數表示牛的身高。
第i行輸出第i頭牛的身高。
資料範圍
1≤n≤1051≤n≤105
輸入樣例:
512
10
輸出樣例:
245
31
思路:從最後一頭牛往前遍歷,比當前牛小的一定在它前面,二分找到當前牛高度,並將此牛刪去(設為負一);
#includeusing namespace std;
const int n = 100000 + 10;
int a[n],tree[n],ans[n];
int n;
int lowbit(int x)
int query(int x)
int add(int x, int val)
int main()
for(int i=n; i>=1; i--)
ans[i] = r;
add(r,-1);
}for(int i=1; i<=n; i++)
cout
}
AcWing 244 迷一樣的牛
題目傳送門 樹狀陣列 二分 題目描述 給定 n 頭牛,且 h i 表示第 i 頭牛前面有 h i 頭牛比它低,求每頭牛的身高。思路 需要從最後一頭牛作為突破口,因為最後一頭牛的 h n 表示,在前面的牛中,有 h n 頭牛比它矮,即在所有的牛中,有 h n 頭牛比他矮,因此最後一牛的高度在所有牛中排...
244 謎一樣的牛(樹狀陣列)
有n頭奶牛,已知它們的身高為 1 n 且各不相同,但不知道每頭奶牛的具體身高。現在這n頭奶牛站成一列,已知第i頭牛前面有ai 頭牛比它低,求每頭奶牛的身高。輸入格式 第1行 輸入整數n。第2 n行 每行輸入乙個整數ai 第i行表示第i頭牛前面有ai 頭牛比它低。注意 因為第1頭牛前面沒有牛,所以並沒...
謎一樣的牛 樹狀陣列
有n頭奶牛,已知它們的身高為 1 n 且各不相同,但不知道每頭奶牛的具體身高。現在這n頭奶牛站成一列,已知第i頭牛前面有ai頭牛比它低,求每頭奶牛的身高。輸入格式 第1行 輸入整數n。第2 n行 每行輸入乙個整數ai,第i行表示第i頭牛前面有ai頭牛比它低。注意 因為第1頭牛前面沒有牛,所以並沒有將...