日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POJ--2104 K-th Number (主席树模版题)

發布時間:2024/10/12 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ--2104 K-th Number (主席树模版题) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接

求區間第k大

#include<iostream> #include<cstring> #include<algorithm> #include<vector> #include<stdio.h> using namespace std; #define maxn 100009 #define LL long long #define mem(a,b) memset(a,b,sizeof(a)) struct ac{int va,l,r; }tre[maxn*25]; int a[maxn],root[maxn],tot=0; vector<int>q; int getid(int x){return (lower_bound(q.begin(),q.end(),x)-q.begin()+1); } void updata(int l,int r,int &x,int y,int z){tre[++tot]=tre[y];tre[tot].va++;x=tot;if(l==r) return ;int mid=(l+r)/2;if(z>mid){updata(mid+1,r,tre[x].r,tre[y].r,z);}else updata(l,mid,tre[x].l,tre[y].l,z); } int query(int l,int r,int x,int y,int z){if(l==r) return l;int s=tre[tre[x].l].va-tre[tre[y].l].va;int mid=(l+r)/2;if(s>=z){return query(l,mid,tre[x].l,tre[y].l,z);}return query(mid+1,r,tre[x].r,tre[y].r,z-s); } int main(){int n,m;cin>>n>>m;mem(a,0); mem(tre,0);for(int j=1;j<=n;j++){scanf("%d",&a[j]);q.push_back(a[j]);}sort(q.begin(),q.end());q.erase(unique(q.begin(),q.end()),q.end());int len=q.size();for(int j=1;j<=n;j++){int x=getid(a[j]);updata(1,len,root[j],root[j-1],x);}for(int j=0;j<m;j++){int l,r,x;scanf("%d%d%d",&l,&r,&x);cout<<q[query(1,len,root[r],root[l-1],x)-1]<<endl;} }

?

轉載于:https://www.cnblogs.com/DyLoder/p/9773364.html

總結

以上是生活随笔為你收集整理的POJ--2104 K-th Number (主席树模版题)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。