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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

线段树——入门

發(fā)布時間:2025/3/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线段树——入门 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先線段樹形象來說就是將數(shù)組看成一個線段,然后不斷的進行分割,保存在樹中的不同節(jié)點上,有點類似于b_樹的定義吧



觀察上圖,首先將整個數(shù)組的某種信息(最大值或者最小值等)保存在根節(jié)點,對應(yīng)【1,8】

然后對【1,8】線段進行平分,得到【1,4】和【5,8】兩個線段,掛在樹的第二層。這樣節(jié)點2保存了數(shù)組中【1,4】的某種信息(最大值或者最小值等),節(jié)點3保存了【5,8】中的某種信息。以此類推,直到線段長度為1,即葉子節(jié)點。

所以,要找尋數(shù)組中某一區(qū)間的某些信息,就直接從書中的某個節(jié)點或者多個節(jié)點的組合就可以得到了。

? 線段樹的操作主要有 建樹,查詢,更新。其中更新包括單點更新和區(qū)間更新。

下面代碼是 OJ上 I Hate It (百度一下)的解答,可以對照著看。代碼中注釋很詳細(xì),自己可以好好研究一下代碼。


#include <cstdio> #include <algorithm> using namespace std; //線段樹 數(shù)組實現(xiàn) 單點更新 #define MAX_NODE 200005 int in[MAX_NODE]; int segtree[4*MAX_NODE+10];int build_tree(int root , int left , int right){if (left == right){segtree[root] = in[left];// printf("node = %d value = %d\n" ,root, in[left]);return -1;}if (right<left)return -1;int mid = (left+right)/2;build_tree(root*2 , left , mid);build_tree(root*2+1 , mid+1 , right);segtree[root] = max(segtree[root*2] , segtree[root*2+1]); }int query_tree(int root , int left , int right , int start ,int end){//找出start 到 end 區(qū)間的最值if(start>right || end<left)//如果該節(jié)點記錄的區(qū)間與查詢的區(qū)間沒有交集return -1;if (left>=start && right<=end)//如果該節(jié)點記錄的區(qū)間是查詢區(qū)間的子集return segtree[root];//剩余情況就是 該節(jié)點記錄的區(qū)間大于待查詢的區(qū)間 或者 該節(jié)點記錄的區(qū)間與待查詢區(qū)間有交集// 節(jié)點記錄區(qū)間大于待查詢區(qū)間時,繼續(xù)遞歸查詢左右子樹//節(jié)點記錄的區(qū)間與待查詢區(qū)間有交集 , 左右子樹總有一個是記錄待查詢區(qū)間的子集int mid = (left+right)>>1;int part1 = query_tree(root*2 , left ,mid,start,end);//查詢左子樹int part2 = query_tree(root*2+1 , mid+1 , right ,start , end);//查詢右子樹//下面兩個判斷是針對節(jié)點記錄的區(qū)間與待查詢區(qū)間有交集但不是待查詢區(qū)間的子集。這樣肯定左右子樹中有一個包含了待查詢區(qū)間的子集if (part1 == -1)//如果左子樹不包含待查詢區(qū)間return part2;if (part2 == -1)//如果右子樹不包含待查詢區(qū)間return part1 ;//節(jié)點記錄區(qū)間大于待查詢區(qū)間時,此時左右子樹都包含了待查詢區(qū)間,所以取左右子樹返回的一個最大值最為待求區(qū)間的最大值return max(part1,part2);// } int update_tree(int root , int left , int right , int updatenode , int value){//updatenode是待更新的節(jié)點的區(qū)間值,value是該節(jié)點的值if (left == right){segtree[root] = value;// printf("D%d update %d\n",root,value);return -1;}int mid = (left+right)>>1;if (mid<updatenode){update_tree(root*2+1,mid+1,right,updatenode, value);}else{update_tree(root*2,left,mid,updatenode,value);}//回溯更新父節(jié)點segtree[root] = max(segtree[root*2],segtree[root*2+1]);// printf("%d update %d\n",root,segtree[root]); } int main (){int m,n;while (~scanf("%d%d",&n,&m)){for (int i = 0 ; i < n ; i ++)scanf("%d",&in[i]);build_tree(1,0,n-1);//root 根節(jié)點號碼必須從大于0的數(shù)開始char c;int a,b;for (int i= 0 ; i < m ; i ++){scanf("\n%c%d%d",&c,&a,&b);if (c=='Q')printf("%d\n",query_tree(1,0,n-1,a-1,b-1));else if (c=='U')update_tree(1,0,n-1,a-1,b);}} }

總結(jié)

以上是生活随笔為你收集整理的线段树——入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 久艹视频在线观看 | www国产com| 国产91精品看黄网站在线观看 | 欧美日韩国产中文字幕 | 爱爱视频免费看 | 亚洲黄片一区二区三区 | 国产电影一区二区三区爱妃记 | 97国产高清 | 国产精品久久91 | 亚洲精品中文字幕在线播放 | 日韩精彩视频在线观看 | 国产欧美在线观看视频 | 国产h在线观看 | 国产一区免费视频 | 亚洲国产区 | 国产精品区一区二区三 | 日韩无遮挡 | 久草视频福利在线 | 欧美少妇毛茸茸 | 老狼影院伦理片 | 久久久久久综合网 | 亚洲精品自拍视频 | 青青青草国产 | 爱插网 | 日韩a毛片 | 日本一区二区视频在线观看 | 欧美三级一区 | 亚洲中文一区二区三区 | 欧美精品久久久 | 国产一区二区三区免费在线观看 | 99精品小视频 | 波多野结衣乳巨码无在线 | 国产精品久久久久久69 | 俄罗斯嫩小性bbwbbw | 国产在线观看免费高清 | 亚洲精品国产成人 | 亚洲自拍中文字幕 | 久久精品国产亚洲av久一一区 | 精品国模一区二区三区欧美 | 亚洲成人中文字幕在线 | 中文字幕在线观看视频免费 | 成人激情自拍 | 樱桃成人精品视频在线播放 | ts人妖在线观看 | 国产中文一区 | 亚洲自拍偷拍一区 | 欧美激情精品久久久久久蜜臀 | 成人免费视屏 | 爱爱视频在线看 | www.欧美色 | 亚洲最大的网站 | 日韩资源在线观看 | 日本不卡视频一区 | 精品久久影院 | 日韩在线视频免费看 | 国产区精品在线观看 | 正在播放久久 | 亚洲精品一区二区三区中文字幕 | 99久久精品免费看国产免费软件 | 日韩精品人妻中文字幕有码 | wwwxxx亚洲 | 中文字幕精品一区二区精品 | 久久九九色 | 欧美性猛交久久久乱大交小说 | 国产精品一级黄色片 | 日本在线播放 | 91在线观看免费视频 | 国产精品一 | 欧美一区二区三区电影 | 日本美女视频网站 | 94av| 一区二区三区四区五区在线视频 | 国产无遮挡免费视频 | 亚洲人成小说 | 婷婷视频一区 | 色哟哟在线观看视频 | 婷婷视频网 | 人妻少妇偷人精品视频 | 成人精品网 | 国产十区 | 中文在线资源天堂 | 欧美大片www | 亚洲最大黄色网址 | 欧美激情 国产精品 | 深夜福利视频在线观看 | 日韩精品一区二区三区无码专区 | 男插女av | 精品九九九九九 | 二级黄色片 | 国产日日夜夜 | 97国产在线视频 | 亚洲m码 欧洲s码sss222 | 不卡精品| 黑人巨大精品人妻一区二区 | 久热综合 | 中文字幕免费高清网站 | 最新视频 - 8mav | 婷婷人体| 久久色播|