【主席树 求区间第k大】poj 2104 K-th Number
来源:互联网 发布:cv 知乎 编辑:程序博客网 时间:2024/05/22 05:34
Link:http://poj.org/problem?id=2104
离散化+保存历史版本的线段树,线段树结点代表的意思是区间(值域)数的个数
#include <cstdio>#include <vector>#include <algorithm>using namespace std;typedef long long LL;//#pragma comment(linker, "/STACK:102400000,102400000")const int N = 1e5+5;int n,m,cnt,root[N],a[N];struct Node{ int l,r,sum; }T[N*40];vector<int> v;int getid(int x){return lower_bound(v.begin(),v.end(),x)-v.begin()+1; }void update(int l,int r,int &x,int y, int pos){ T[++cnt] = T[y];T[cnt].sum++;x = cnt; if(l==r) return ; int mid = (l+r)/2; if(mid >= pos) update(l,mid,T[x].l,T[y].l,pos); else update(mid+1,r,T[x].r,T[y].r,pos);}int query(int l,int r,int x,int y,int k){ if(l==r) return l; int mid = (l+r)/2; int sum = T[T[y].l].sum - T[T[x].l].sum; if(sum >= k) return query(l,mid,T[x].l,T[y].l,k); else return query(mid+1,r,T[x].r,T[y].r,k-sum);}int main(){// cnt = 0; scanf("%d%d",&n,&m); for(int i = 1; i <= n; i++){ scanf("%d",&a[i]); v.push_back(a[i]); } sort(v.begin(),v.end()); v.erase(unique(v.begin(),v.end()),v.end()); for(int i = 1; i <= n; i++) update(1,n,root[i],root[i-1],getid(a[i])); int x,y,k; for(int i = 1; i <= m; i++) { scanf("%d%d%d",&x,&y,&k); printf("%d\n",v[query(1,n,root[x-1],root[y],k)-1]); } return 0;}
阅读全文
0 0
- POJ 2104 K-th Number 主席树(求区间第k大)
- 【主席树 求区间第k大】poj 2104 K-th Number
- poj 2107 K-th Number(主席树求区间第K大)
- POJ 2104(K-th Number-区间第k大-主席树)
- POJ 2104(K-th Number-区间第k大-主席树)
- POJ 2104 K-th Number 主席树 静态区间第K大
- 【POJ 2104】(K-th Number-区间第k大-主席树)
- POJ 2104 K-th Number (主席树 静态区间第K大)
- poj 2104 K-th Number (静态区间第k大,主席树)
- [poj 2104 K-th Number] 主席树 区间第K大
- POJ 2104 K-th Number 静态区间第k大 主席树
- POJ-2104 K-th Number (主席树 不带修改区间第k大)
- 用线段树求区间第K大(POJ 2104 K-th Number)
- POJ 2104 & HDU 2665 & POJ 2761 K-th Number (主席树入门题 区间第K大)
- POJ 2104K-th Number&&HDU 2665Kth number划分树 求区间第k大 裸题
- poj2104 K-th Number(静态区间k大,主席树)
- POJ2104-K-th Number-区间第k大-可持久化线段树/主席树
- POJ 2104-K-th Number(划分树)求区间内第k小的数
- 飞腾1500A平台上构建Go语言环境指南
- QT中的GL
- HDU 6105 Gameia
- JAVA 判断一个字符串是不是一个合法的日期格式
- 图片边缘出现黑点的问题分析和解决(纹理过滤)
- 【主席树 求区间第k大】poj 2104 K-th Number
- Android 自定义 View 实现通讯录字母索引(仿微信通讯录)
- java中同步、异步的使用和区别
- jQuery实现右侧功能栏、点击其它地方,右侧功能栏隐藏
- 机器学习之支持向量机(SVM)
- 阿里巴巴大数据实践-读书笔记
- jquery datagrid 参数及使用
- 网络编程
- vc调用外部exe文件操作方法