hdu 2665 裸的划分树
来源:互联网 发布:db2关闭数据库 编辑:程序博客网 时间:2024/06/07 22:20
#include<stdio.h>#include<algorithm>#define N 100100using namespace std;struct node{ int x,y,mid;}a[N*4];struct Tree{ int val,num,p;}tree[20][N];int st[N];void build(int x,int y,int cen,int t){ int m,v; a[t].x=x; a[t].y=y; m=a[t].mid=(x+y)>>1; Tree *last=tree[cen-1],*cur=tree[cen]; int mid=st[m],sum=0,i,l=x,r=m+1; for(i=m;i>=x;i--) { if(st[i]==mid) sum++; else break; } for(i=x;i<=y;i++) { v=last[i].val; if(v==mid) { if(sum) { cur[l++].val=v; last[i].num=last[i].p=0; sum--; } else { cur[r++].val=v; last[i].num=last[i].p=1; } } else if(v<mid) { cur[l++].val=v; last[i].num=last[i].p=0; } else { cur[r++].val=v; last[i].num=last[i].p=1; } } for(i=x+1;i<=y;i++) last[i].num+=last[i-1].num; if(x==y) return; int temp=t<<1; build(x,m,cen+1,temp); build(m+1,y,cen+1,temp+1);}int query(int x,int y,int k,int cen,int t){ Tree l=tree[cen][x],r=tree[cen][y]; int mid=a[t].mid; if(a[t].x==a[t].y) return l.val; int dif=(y-x+1)-(r.num-l.num+l.p); if(dif>=k) return query(x-l.num+l.p,y-r.num,k,cen+1,t*2); else return query(mid+l.num+1-l.p,mid+r.num,k-dif,cen+1,t*2+1);}int main(){ int t,n,m,i,j,k; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(i=1;i<=n;i++) { scanf("%d",&st[i]); tree[0][i].val=st[i]; } sort(st+1,st+1+n); build(1,n,1,1); while(m--) { scanf("%d%d%d",&i,&j,&k); printf("%d\n",query(i,j,k,0,1)); } } return 0;}
0 0
- hdu 2665 裸的划分树
- HDU 2665 划分树
- hdu 2665 划分树
- hdu 2665 划分树
- hdu 2665 划分树
- hdu 2665 划分树
- hdu 2665 划分树模板
- hdu 2665(划分树)
- hdu 2665 (poj 2104) 划分树
- hdu 2665 Kth number_划分树
- hdu 2665 Kth number 划分树
- hdu 2665 Kth number(划分树)
- HDU-2665-Kth number(划分树)
- hdu 2665 Kth number 划分树
- hdu 2665 Kth number 划分树
- hdu 2665Kth-number 划分树
- HDU 2665 Kth number 划分树
- HDU 2665 Kth number(划分树)
- 我不忍心再这样下去
- 华为机试题:去掉最大最小值
- 常用Dos命令
- UncaughtException 和 Using 1.7 requires compiling with Android 4.4 (KitKat); currently using API 8
- 数据挖掘十八大经典算法
- hdu 2665 裸的划分树
- $.ajax()方法
- 复习JNDI、数据源、连接池
- JAVA基础(12) java代码反射获取log
- 巴斯卡三角形和杨辉三角c语言实现(三种方法)
- 一些好的文章
- Text Justification
- 如何获得当前时间
- 企业关注技能知识点【Struts2框架】