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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[数据结构-划分树小结]

發(fā)布時(shí)間:2025/3/21 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [数据结构-划分树小结] 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

劃分樹是一種基于線段樹的數(shù)據(jù)結(jié)構(gòu)。主要用于快速求出(在log(n)的時(shí)間復(fù)雜度內(nèi))序列區(qū)間的第k大值。

先看下圖已經(jīng)建好的劃分樹是什么樣子的,原始數(shù)組是[1,5,2,3,6,4,7,3,0,0],并把它作為樹的第0層,然后把這些數(shù)中較小的數(shù)再組成[1,2,3,0,0],順序還是遵照原數(shù)組的順序,同樣將較大的數(shù)再組成[5,6,4,7,3]。把這兩個(gè)數(shù)組作為樹的第二層,它們的父親則是第一層的原始數(shù)組,這樣一直往下建立,就把劃分樹建好了。

那么到底如何建立這個(gè)劃分樹呢?例如如何將[1,5,2,3,6,4,7,3,0,0]分為[1,2,3,0,0]和[5,6,4,7,3]兩部分?

設(shè)[1,5,2,3,6,4,7,3,0,0]為數(shù)組A,長度為len。

首先預(yù)處理將數(shù)組A排序:[0,0,1,2,3,3,4,5,6,7],然后在A中分別找到“0,0,1,2,3”這(len/2)個(gè)數(shù),并按數(shù)組A的順序放到下一層[1,2,3,0,0]??梢园l(fā)現(xiàn),這一操作的復(fù)雜度是O(len)。

下面看如何查詢?cè)谀骋粎^(qū)間內(nèi)的第k小的數(shù)。仍然觀察下圖,要查找區(qū)間[3,9]中第2小的數(shù),先標(biāo)記在原數(shù)組A中[3,9]這個(gè)區(qū)間(數(shù)組下標(biāo)從1開始),即val[0]層涂上黃色背景的部分,現(xiàn)在我們?nèi)绾沃肋@個(gè)黃色背景的部分在下一層如何分布呢?這里就需要用到一個(gè)數(shù)組toleft[ ][ ] ,toleft[dep][i]表示下標(biāo)小于等于i的數(shù)中在第dep層中分在其左孩子的個(gè)數(shù)。

比如圖中val[0]這一層中,toleft[0][1]=1,toleft[0][2]=1,toleft[0][3]=2…..。這樣的話就可以利用toleft數(shù)組來確定黃色背景區(qū)域在下一層如何分布了??梢源_定[3,9]區(qū)間在左孩子的有l(wèi)eft[0][9]-left[0][3]=3個(gè),所以最終結(jié)果肯定在左孩子中找了。當(dāng)然在這個(gè)左孩子中,要排除掉藍(lán)色背景部分的1,0,就順利得到下一步要在第二層查找的是:區(qū)間[2,4]的第2小的數(shù)。依次類推,得到最終結(jié)果。

圖片摘自http://www.cnblogs.com/pony1993/archive/2012/07/17/2594544.html

/* * 劃分樹(查詢區(qū)間第k大) */ const int MAXN = 100010; int tree[20][MAXN];//表示每層每個(gè)位置的值 int sorted[MAXN];//已經(jīng)排序好的數(shù) int toleft[20][MAXN];//toleft[p][i]表示第i層從1到i有數(shù)分入左邊 void build(int l,int r,int dep) 上海大學(xué) ACM 模板 by kuangbin 40 / 152 ACM 模板 kuangbin {if(l == r)return;int mid = (l+r)>>1;int same = mid - l + 1;//表示等于中間值而且被分入左邊的個(gè)數(shù)for(int i = l; i <= r; i++) //注意是l,不是oneif(tree[dep][i] < sorted[mid])same--;int lpos = l;int rpos = mid+1;for(int i = l; i <= r; i++){if(tree[dep][i] < sorted[mid])tree[dep+1][lpos++] = tree[dep][i];else if(tree[dep][i] == sorted[mid] && same > 0){tree[dep+1][lpos++] = tree[dep][i];same--;}elsetree[dep+1][rpos++] = tree[dep][i];toleft[dep][i] = toleft[dep][l-1] + lpos - l;}build(l,mid,dep+1);build(mid+1,r,dep+1); } //查詢區(qū)間第k大的數(shù),[L,R]是大區(qū)間,[l,r]是要查詢的小區(qū)間 int query(int L,int R,int l,int r,int dep,int k) {if(l == r)return tree[dep][l];int mid = (L+R)>>1;int cnt = toleft[dep][r] - toleft[dep][l-1];if(cnt >= k){int newl = L + toleft[dep][l-1] - toleft[dep][L-1];int newr = newl + cnt - 1;return query(L,mid,newl,newr,dep+1,k);}else{int newr = r + toleft[dep][R] - toleft[dep][r];int newl = newr - (r-l-cnt);return query(mid+1,R,newl,newr,dep+1,k-cnt);} } int main() {int n,m;while(scanf("%d%d",&n,&m)==2){memset(tree,0,sizeof(tree));for(int i = 1; i <= n; i++){scanf("%d",&tree[0][i]);sorted[i] = tree[0][i];}sort(sorted+1,sorted+n+1);build(1,n,0);int s,t,k;while(m--){scanf("%d%d%d",&s,&t,&k);printf("%d\n",query(1,n,s,t,0,k));}}return 0; }

轉(zhuǎn)載于:https://www.cnblogs.com/lastone/p/5275860.html

總結(jié)

以上是生活随笔為你收集整理的[数据结构-划分树小结]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久不射视频 | 国产a∨精品一区二区三区仙踪林 | 黑人满足娇妻6699xx | www.色香蕉| 国产素人在线 | 国产精品夜夜夜爽张柏芝 | 国内毛片毛片毛片毛片毛片 | av激情四射| 国产美女自拍 | 夜夜成人| 亚洲人体视频 | 色成人综合网 | 九九九九国产 | 亚洲国产精品无码专区 | 亚洲生活片 | 香蕉久久精品日日躁夜夜躁 | 国产精品久久久久9999 | 成人在线h | 国产伦精品一区二区三区免费 | 欧美男人亚洲天堂 | 亚洲欧美精品在线观看 | 日韩福利视频在线观看 | 午夜av影院 | 女性裸体下面张开 | www成人免费| 男女午夜激情 | 黄色片子视频 | 国产精品一线二线三线 | 粉嫩av网站 | 国产精品91一区 | 超碰在线资源 | 欧美作爱视频 | 成年人网站黄 | 在线观看福利视频 | 黄色国产一级片 | 欧美激情电影一区二区 | 污片网站在线观看 | 在线欧美一区 | 91精品国产91综合久久蜜臀 | 自拍av在线 | 午夜视频a| 波多野结衣电影免费观看 | 国产真人做爰视频免费 | 手机在线一区二区 | 亚洲激情社区 | 欧美一区二区不卡视频 | 国产在线一区二区视频 | 69久久成人精品 | 91嫩草欧美久久久九九九 | 蜜桃视频中文字幕 | 天海翼中文字幕 | 一级片自拍| 国产精品久久久久久久妇 | 女人一级一片30分 | 中文字幕人妻色偷偷久久 | 制服 丝袜 激情 欧洲 亚洲 | 亚洲三区av | 8x8ⅹ成人永久免费视频 | 欧美成人精品在线视频 | 噜噜在线视频 | 欧美日本道 | 两性午夜视频 | 丁香七月婷婷 | 午夜啊啊啊 | 中出在线播放 | 在线免费观看国产 | 久久中文字幕无码 | 午夜丁香婷婷 | youjizz.com最新| 欧美国产一级片 | 婷婷久久丁香 | 国产精品国语自产拍在线观看 | 韩日av一区二区 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 男人的天堂欧美 | 亚洲天堂av电影 | av免费福利 | 久久久久亚洲av无码专区喷水 | 黑人精品无码一区二区三区AV | 久久精品人妻一区二区三区 | 天天高潮夜夜爽 | 成人精品免费看 | 天堂在线免费视频 | 久久久久一级片 | 国产又爽又黄又嫩又猛又粗 | 欧美视频 | 少妇日韩 | 久久不射视频 | 欧美视频一区二区三区四区 | 国产资源av | 国产精品国语自产拍在线观看 | 超碰男人| 精品97人妻无码中文永久在线 | 亚洲视频一 | 欧美色图亚洲天堂 | 欧洲性生活片 | 你懂的亚洲 | 免费h片在线观看 | 国产一区二区三区四区三区四 |