有n頭奶牛,已知它們的身高為 1~n 且各不相同,但不知道每頭奶牛的具體身高。
現在這n頭奶牛站成一列,已知第i頭牛前面有ai頭牛比它低,求每頭奶牛的身高。
輸入格式
第1行:輸入整數n。
第2…n行:每行輸入乙個整數ai,第i行表示第i頭牛前面有ai頭牛比它低。
(注意:因為第1頭牛前面沒有牛,所以並沒有將它列出)
輸出格式
輸出包含n行,每行輸出乙個整數表示牛的身高。
第i行輸出第i頭牛的身高。
資料範圍
1 ≤n
≤105
1≤n≤10^5
1≤n≤10
5輸入樣例:51
210輸出樣例:24
531這次樹狀陣列的意義是l,r區間內我們可以選擇的高度數量,並且對於單點來說如果這個值為1那麼代表沒有選,為0代表選了。因為樹狀陣列新增的值是字首和,一定滿足單調性,所以可以二分來查詢第乙個第k大的值。然後選了這個高度的牛再刪除就好了。
#include
//#define int long long
using
namespace std;
const
int n=
2e5+7;
#define lowbit(x) (x&(-x))
int n,m,tree[n]
;int a[n]
,res[n]
;void
add(
int x,
int c)
}int
ask(
int x)
return ans;
}int
main()
res[i]
=l;add
(r,-1)
;}for(
int i=
1;i<=n;i++
)printf
("%d\n"
,res[i]);
}
謎一樣的牛(樹狀陣列 二分)
題目描述 有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頭牛前面沒有牛,所以並沒有將...
謎一樣的牛 樹狀陣列
有n頭奶牛,已知它們的身高為 1 n 且各不相同,但不知道每頭奶牛的具體身高。現在這n頭奶牛站成一列,已知第i頭牛前面有ai頭牛比它低,求每頭奶牛的身高。輸入格式 第1行 輸入整數n。第2 n行 每行輸入乙個整數ai,第i行表示第i頭牛前面有ai頭牛比它低。注意 因為第1頭牛前面沒有牛,所以並沒有將...