其他分享
首页 > 其他分享> > acw.244. 谜一样的牛

acw.244. 谜一样的牛

作者:互联网

有 n头奶牛,已知它们的身高为 1∼n 且各不相同,但不知道每头奶牛的具体身高。

现在这 nn 头奶牛站成一列,已知第 i头牛前面有 Ai 头牛比它低,求每头奶牛的身高。

输入格式

第 1行:输入整数 nn。

第 2..n行:每行输入一个整数 Ai,第 i行表示第 i 头牛前面有Ai 头牛比它低。
(注意:因为第 1 头牛前面没有牛,所以并没有将它列出)

输出格式

输出包含 n行,每行输出一个整数表示牛的身高。

第 i 行输出第 i 头牛的身高。

数据范围

1≤n≤105

笔记: 树状数组可以记录sum(x),1~x的前缀和,x前缀和记录身高比x小的牛的数量,和二分结合找sum(x)=k+1。

打卡:https://www.acwing.com/file_system/file/content/whole/index/content/2754779/

int main(){
    cin>>n;
    for(int i=2;i<=n;i++)cin>>h[i];
    for(int i=1;i<=n;i++)tr[i]=lowbit(i);
    for(int i=n;i;i--){
        int k=h[i]+1;
        int  l=1,r=n;
        while(l<r){
            int mid=(l+r+1)>>1;
            if(sum(mid)<k)l=mid;
            else r=mid-1;
        }
        ans[i]=l;
        add(l,-1);
    }
    for(int i=1;i<=n;i++)cout<<ans[i]<<endl;
    return 0;
}

  

标签:奶牛,头牛,谜一样,sum,int,acw.244,Ai,身高
来源: https://www.cnblogs.com/reene/p/15142545.html