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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

HDU4417 Super Mario 主席树

發布時間:2023/12/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU4417 Super Mario 主席树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

歡迎訪問~原文出處——博客園-zhouzhendong

去博客園看該題解


題目傳送門 - HDU4417


題意概括

  給定一個長度為n的區間,同時給出m個詢問,每次詢問在區間[l,r]中有多少個數小于或等于k。


題解

  幾乎是模板題。

  我們只需要把query函數隨便改改就可以了。


代碼

#include <cstring> #include <cstdio> #include <algorithm> #include <cstdlib> #include <cmath> using namespace std; const int N=100005,S=N*4*20; int T,n,m,root[N],ls[S],rs[S],sum[S],v[N],ha[N],cnt,total; void pushup(int rt){sum[rt]=sum[ls[rt]]+sum[rs[rt]]; } int build(int le,int ri){int rt=++total;if (le==ri){ls[rt]=rs[rt]=sum[rt]=0;return rt;}int mid=(le+ri)>>1;ls[rt]=build(le,mid);rs[rt]=build(mid+1,ri);pushup(rt);return rt; } int update(int rt,int le,int ri,int pos){int now=++total;if (le==ri){sum[now]=sum[rt]+1;ls[now]=rs[now]=0;return now;}int mid=(le+ri)>>1;if (pos<=mid)ls[now]=update(ls[rt],le,mid,pos),rs[now]=rs[rt];elsers[now]=update(rs[rt],mid+1,ri,pos),ls[now]=ls[rt];pushup(now);return now; } int query(int rt1,int rt2,int le,int ri,int val){if (ha[ri]<=val)return sum[rt2]-sum[rt1];if (ha[le]>val)return 0;int mid=(le+ri)>>1;return query(ls[rt1],ls[rt2],le,mid,val)+query(rs[rt1],rs[rt2],mid+1,ri,val); } int main(){scanf("%d",&T);for (int Case=1;Case<=T;Case++){printf("Case %d:\n",Case);scanf("%d%d",&n,&m);for (int i=1;i<=n;i++)scanf("%d",&v[i]),ha[i]=v[i];sort(ha+1,ha+n+1);cnt=1;for (int i=2;i<=n;i++)if (ha[i]!=ha[i-1])ha[++cnt]=ha[i];total=0;root[0]=build(1,cnt);for (int i=1;i<=n;i++){v[i]=lower_bound(ha+1,ha+cnt+1,v[i])-ha;root[i]=update(root[i-1],1,cnt,v[i]);}for (int i=1;i<=m;i++){int a,b,v;scanf("%d%d%d",&a,&b,&v);printf("%d\n",query(root[a],root[b+1],1,cnt,v));}}return 0; }

  

轉載于:https://www.cnblogs.com/zhouzhendong/p/HDU4417.html

總結

以上是生活随笔為你收集整理的HDU4417 Super Mario 主席树的全部內容,希望文章能夠幫你解決所遇到的問題。

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