zoukankan      html  css  js  c++  java
  • 【题解】Leyni,罗莉和队列(树状数组)

    【题解】Leyni,罗莉和队列(树状数组)

    HRBUST - 1356

    将整个序列reverse一下,现在就变成了从高到低的排队。题目就变成了,定位一个妹子,问这个妹子前面的比这个妹子小的妹子中,下标最小的数是哪个。

    所以以年龄为下标,以(原数组)下标为值建立一颗值域线段树,由于我们只要找到在原数组下标最小的哪一个,所以相当于动态维护前缀(min) ,由于我们只要查询比当前定位妹子小的一段前缀,所以拿树状数组代替就是了。

    由于这群妹子是神仙(年龄可达1e9),所以要离散化一下。

    复杂度(O(nlog n))

    //@winlere
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    
    
    using namespace std;  typedef long long ll;  
    inline int qr(){
          register int ret=0,f=0;
          register char c=getchar();
          while(c<48||c>57)f|=c==45,c=getchar();
          while(c>=48&&c<=57) ret=ret*10+c-48,c=getchar();
          return f?-ret:ret;
    }
    const int maxn=1e5+5;
    const int inf=0x3f3f3f3f;
    int data[maxn];
    int sav[maxn];
    int ans[maxn];
    int n;
    
    inline void add(const int&pos,const int&tag){
          for(register int t=pos;t<=n;t+=t&-t) sav[t]=min(sav[t],tag);
    }
    
    inline int que(const int &pos){
          register int ret=inf;
          for(register int t=pos;t;t-=t&-t) ret=min(ret,sav[t]);
          return ret;
    }
    
    int main(){
          int T=qr();
          while(T--){
    	    n=qr();
    	    for(register int t=1;t<=n;++t) data[t]=sav[t]=qr();
    	    reverse(data+1,data+n+1);
    	    sort(sav+1,sav+n+1);
    	    for(register int t=1;t<=n;++t) data[t]=lower_bound(sav+1,sav+n+1,data[t])-sav;
    	    for(register int t=1;t<=n;++t) sav[t]=inf;
    	    for(register int t=1;t<=n;++t){
    		  ans[t]=inf;
    		  ans[t]=min(ans[t],que(data[t]-1));
    		  add(data[t],t);
    	    }
    	    for(register int t=n;t>=1;--t)
    		  printf("%d%c",ans[t]==inf?-1:t-ans[t]-1,t==1?'
    ':' ');
          }
          return 0;
    }
    
    
  • 相关阅读:
    Ajax基础:3.Json
    Head First Design Patterns State Pattern
    Head First Design Patterns Template Method Pattern
    Articles For CSS Related
    Head First Design Patterns Decorator Pattern
    代码审查工具
    How To Be More Active In A Group
    Head First Design Patterns Factory Method Pattern
    Head First Design Patterns Composite Pattern
    Tech Articles
  • 原文地址:https://www.cnblogs.com/winlere/p/11414679.html
Copyright © 2011-2022 走看看