设为首页 加入收藏

TOP

HDU 2665 Kth number(划分树)
2015-07-20 17:35:04 来源: 作者: 【 】 浏览:2
Tags:HDU 2665 Kth number 划分
Problem Description Give you a sequence and ask you the kth big number of a inteva l.
Input The first line is the number of the test cases.
For each test case, the first line contain two integer n and m (n, m <= 100000), indicates the number of integers in the sequence and the number of the quaere.
The second line contains n integers, describe the sequence.
Each of following m lines contains three integers s, t, k.
[s, t] indicates the interval and k indicates the kth big number in interval [s, t]
Output For each test case, output m lines. Each line contains the kth big number.
Sample Input
1 
10 1 
1 4 2 3 5 6 7 8 9 0 
1 3 2 

Sample Output
2

划分树:Kuangbin大大的模板。

#include
   
    
#include
    
      #include
     
       #include
      
        #include
       
         typedef long long LL; using namespace std; const int maxn=100000+100; int tree[30][maxn]; int s[maxn],L[20][maxn]; int t,n,m; void build(int l,int r,int dep) { // cout<<"aaaa "<
        
         >1; int ss=mid-l+1; for(int i=l;i<=r;i++) { if(tree[dep][i]
         
          0) { tree[dep+1][lpos++]=tree[dep][i]; ss--; } else tree[dep+1][rpos++]=tree[dep][i]; L[dep][i]=L[dep][l-1]+lpos-l; } build(l,mid,dep+1); build(mid+1,r,dep+1); } int query(int LL,int RR,int l,int r,int dep,int k) { // cout<<"aaaa "<
          
           >1; int cnt=L[dep][r]-L[dep][l-1]; if(cnt>=k) { int ll=LL+L[dep][l-1]-L[dep][LL-1]; int rr=ll+cnt-1; return query(LL,mid,ll,rr,dep+1,k); } else { int rr=r+L[dep][RR]-L[dep][r]; int ll=rr-(r-l-cnt); return query(mid+1,RR,ll,rr,dep+1,k-cnt); } } int main() { int x,y,k; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); memset(tree,0,sizeof(tree)); for(int i=1;i<=n;i++) { scanf("%d",&tree[0][i]); s[i]=tree[0][i]; } sort(s+1,s+n+1); build(1,n,0); for(int i=1;i<=m;i++) { scanf("%d%d%d",&x,&y,&k); printf("%d\n",query(1,n,x,y,0,k)); } } return 0; } 
          
         
        
       
      
     
    
   


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇zoj 2319 Beautiful People 下一篇POJ 2736 Housewife Wind(树链剖..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)