hdu 2665 划分树
来源:互联网 发布:多线程并发写数据库 编辑:程序博客网 时间:2024/05/22 06:42
对划分树的详解昂上已经很清楚了 , 这就是道裸划分树题 ,敲吧!!!!!;
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std;int tree[20][100010];int sum[20][100010],num[100010];int build(int floot,int L,int R){ int i; int mid=(R+L)/2; int cont=mid-L+1; int lstar=L,rstar=mid+1; for(i=L;i<=mid;i++) { if(num[i]<num[mid]) cont--; } for(i=L;i<=R;i++) { if(i==L) sum[floot][i]=0; else sum[floot][i]=sum[floot][i-1]; if(tree[floot][i]==num[mid]) { if(cont) { cont--; sum[floot][i]++; tree[floot+1][lstar++]=tree[floot][i]; } else { tree[floot+1][rstar++]=tree[floot][i]; } } else if(tree[floot][i]<num[mid]) { sum[floot][i]++; tree[floot+1][lstar++]=tree[floot][i]; } else { tree[floot+1][rstar++]=tree[floot][i]; } } if(L==R) return 0; build(floot+1,L,mid); build(floot+1,mid+1,R); return 0;}int find(int floot,int L,int R,int left,int right,int k){ if(L==R) return tree[floot][L]; int mid=(L+R)/2; int sum1,sum2; if(L==left) { sum1=0; sum2=sum[floot][right]; } else { sum1=sum[floot][left-1]; sum2=sum[floot][right]-sum1; } if(k<=sum2) return find(floot+1,L,mid,L+sum1,L+sum1+sum2-1,k); return find(floot + 1, mid + 1, R, mid - L + 1 + left - sum1, mid - L + 1 + right - sum1 - sum2,k - sum2); }int main(){ int n,m,i,j,T,k,left,right; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); for(i=1;i<=n;i++) { scanf("%d",&num[i]); tree[1][i]=num[i]; } sort(num+1,num+1+n); build(1,1,n); for(i=1;i<=m;i++) { scanf("%d%d%d",&left,&right,&k); printf("%d\n",find(1,1,n,left,right,k)); } } return 0;}
0 0
- 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 裸的划分树
- hdu 2665 Kth number 划分树
- hdu 2665 Kth number 划分树
- hdu 2665Kth-number 划分树
- HDU 2665 Kth number 划分树
- HDU 2665 Kth number(划分树)
- MyEclipse2015 stable 1.0的jQuery智能提示
- 汽狄谣绎噗莰击襄醚水什帻瞅埙獗手亠浒违嘬秉卤浣级芒涛掊堑传
- ZigZag Conversion
- Ceph cephx认证配置
- 不用游标实现遍历
- hdu 2665 划分树
- Android 使用fragment时 listview与手势冲突
- 《RFID技术与应用》第一次作业
- time()的初步理解
- 三分法求极值
- yum无法更新
- IOS 定制中间突出UItabBar
- 【动态规划DP,floyd最短路】poj2240,Arbitrage
- 玩转百度即用API(1)——天气查询