划分树 hdu2665 第k小
来源:互联网 发布:德国拜发测毒素软件 编辑:程序博客网 时间:2024/05/17 22:31
题目链接:点击打开链接
题意有点问题,应该是第k小。其实题不难,就是模板题。
刚学了划分树,留个模板。
详细代码:
#include <stdio.h>#include <iostream>#include <string.h>#include <algorithm>#include <math.h>using namespace std;const int maxn = 1e5+100;int Tree[30][maxn];int num[30][maxn];int Sorted[maxn];void Build(int l,int r,int rt){if(l==r) return ;int mid=(l+r)>>1;int n=mid-l+1;int i;for(i=l;i<=r;i++){if(Tree[rt][i]<Sorted[mid]) n--;}int L=l;int R=mid+1;for(i=l;i<=r;i++){if(Tree[rt][i]<Sorted[mid]){Tree[rt+1][L++]=Tree[rt][i];}else if(Tree[rt][i]==Sorted[mid] && n>0 ){n--;Tree[rt+1][L++]=Tree[rt][i];}else Tree[rt+1][R++]=Tree[rt][i];num[rt][i]=num[rt][l-1]+L-l;}Build(l,mid,rt+1);Build(mid+1,r,rt+1);}int query(int L,int R,int k,int l,int r,int rt)//L,R为查询区间{if(L==R) return Tree[rt][L];int mid=(l+r)>>1;int cnt=num[rt][R]-num[rt][L-1];if(cnt>=k){ int newl=l+num[rt][L-1]-num[rt][l-1];int newr=l+num[rt][R]-num[rt][l-1]-1;return query(newl,newr,k,l,mid,rt+1);}else{int newl=mid+L-l+1-(num[rt][L-1]-num[rt][l-1]);int newr=mid+R-l+1-(num[rt][R]-num[rt][l-1]);return query(newl,newr,k-cnt,mid+1,r,rt+1);}}int main(){int t;scanf("%d",&t);while(t--){int n,m;memset(Tree,0,sizeof(Tree));memset(num,0,sizeof(num));int i,j,k;scanf("%d%d",&n,&m);for(i=1;i<=n;i++){scanf("%d",&Tree[0][i]);Sorted[i]=Tree[0][i];}sort(Sorted+1,Sorted+n+1);int L,R;Build(1,n,0);while(m--){scanf("%d%d%d",&L,&R,&k);printf("%d\n",query(L,R,k,1,n,0));}}return 0;}
0 0
- 划分树 hdu2665 第k小
- HDU2665之划分树
- hdu2665(划分树)
- poj2104 hdu2665 划分树
- hdu2665 划分树
- 可持久化线段树入门题 hdu2665 求区间第k小的数
- hdu2665/poj2104;poj2761 区间第k小 函数式线段树
- HDU2665(函数式线段树-区间第K大)
- 主席树模板(区间第k大!)hdu2665
- hdu2665区间第K大+主席树解题报告
- 划分树(求区间第k小值)
- POJ2104:划分树求区间第k小
- [hdu2665 Kth number]区间第k大数
- 第k元素 划分树
- poj2104||hdu2665 归并树|划分树
- HDU2665--Kth Number(划分树)
- hdu2665 求区间第k大(小?)【主席树or可持久化线段树or函数式线段树】
- POJ 2104-K-th Number(划分树)求区间内第k小的数
- 安卓开发——在Activity里如何获得另一个xml布局文件的控件
- linux scp远程拷贝文件及文件夹
- 2016华为软件精英挑战赛初赛题目,个人分析与代码,尚未测试代码,因为没有judge系统啊!
- 对象迁移表空间引出的三个小问题
- 学习python入门(一)
- 划分树 hdu2665 第k小
- PHP empty、isset、isnull的区别
- 基于webpack搭建前端工程解决方案探索
- IOS dispatch_once
- 【安卓基础四】adb命令使用Heap检测和分析Android应用内存
- Linux多线程及同步
- PHP字符串函数
- shell 编程笔记
- hiho1031 01背包