青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

劃分樹

Posted on 2011-06-27 20:54 Mato_No1 閱讀(2874) 評論(1)  編輯 收藏 引用 所屬分類: 經典問題的模型 、其它高級數據結構
首先,Orz一下AHdoc神犇,本沙茶是看他的總結才搞懂劃分樹的。
原文地址

劃分樹,就是每個結點代表一個序列,設這個序列的長度為len,若len>1,則序列中前len/2(上取整,這里數學公式不好打,真囧)個元素被分到左子結點,左子結點代表的序列就是這些元素按照根結點中的順序組成的序列,而剩下的元素被分到右子結點,右子結點代表的序列也就是剩下的元素按照根結點中的順序組成的序列;若len=1,則該結點為葉結點。劃分樹最重要的應用就是找區間第K?。ㄖ皇遣檎遥话ㄐ薷模?br />
寫劃分樹時主要有兩個函數:建樹和找區間第K小。由于后者AHdoc神犇已經總結了,所以這里只總結建樹的函數。

設目前結點為[l..r](l<r,就是目前的結點是原序列不斷劃分后得到[l..r]這一段,其實也就是a0[l..r]打亂順序后得到的,a0為原序列遞增排序后的序列)首先找到中值,就是a0[mid],mid=l+r>>1。然后可以得到,[l..r]中小于中值的的元素一定被劃分到左子結點,[l..r]中大于中值的元素一定被劃分到右子結點,而[l..r]中等于中值的元素則不確定,有的被劃分到左子結點,有的被劃分到右子結點,這就需要先找到應被劃分到左子結點的等于中值的元素個數sm(從mid開始不斷往左,直到找到邊界處或者找到一個小于中值的元素為止,或者說,sm就是a0[l..mid]中等于中值的元素個數),然后開始劃分,小于中值分到左子結點,大于中值分到右子結點,等于中值的,若目前還沒滿sm則分到左子結點否則分到右子結點。另外中間有兩個值需要記錄(找區間第K小時必須要用到):sl和sr。sl[i]表示[l..i]中被分到左子結點的元素個數,sr[i]表示[l..i]中被分到右子結點的元素個數(這里l<=i<=r。顯然sl[i]+sr[i]=i-l+1,其實sr[i]可以不用記錄的,這里只是為了在找第K小操作中減少計算次數,起到空間換時間的作用)。
建樹代碼:
int mkt(int l, int r, int d)
{
    T[
++No].l = l; T[No].r = r; int mid = l + r >> 1; T[No].mid = mid;
    
if (l == r) return No;
    
int midv = a0[mid], sm = mid - l + 1; rre2(i, mid, l) if (a0[i] < midv) {sm = mid - i; break;}
    
int x = l, y = mid + 1;
    
if (a[d][l] < midv) {
        a[d 
+ 1][x++= a[d][l]; sl[d][l] = 1; sr[d][l] = 0;
    } 
else if (a[d][l] == midv && sm) {
        a[d 
+ 1][x++= a[d][l]; sl[d][l] = 1; sr[d][l] = 0; sm--;
    } 
else {
        a[d 
+ 1][y++= a[d][l]; sl[d][l] = 0; sr[d][l] = 1;
    }
    re3(i, l
+1, r) {
        
if (a[d][i] < midv) {
            a[d 
+ 1][x++= a[d][i]; sl[d][i] = sl[d][i - 1+ 1; sr[d][i] = sr[d][i - 1];
        } 
else if (a[d][i] == midv && sm) {
            a[d 
+ 1][x++= a[d][i]; sl[d][i] = sl[d][i - 1+ 1; sr[d][i] = sr[d][i - 1]; sm--;
        } 
else {
            a[d 
+ 1][y++= a[d][i]; sl[d][i] = sl[d][i - 1]; sr[d][i] = sr[d][i - 1+ 1;
        }
    }
    
int No0 = No; T[No0].lch = mkt(l, mid, d + 1); T[No0].rch = mkt(mid + 1, r, d + 1); return No0;
}
這里a是每層劃分后的序列。
查找區間第K小的代碼:
int Find_Kth(int l, int r, int K)
{
    
int i = root, d = 0, l0, r0, mid0, s0, s1;
    
while (1) {
        l0 
= T[i].l, r0 = T[i].r; mid0 = T[i].mid;
        
if (l0 == r0) return a[d][l];
        
if (l == l0) s0 = l; else s0 = l0 + sl[d][l - 1]; s1 = l0 + sl[d][r] - 1;
        
if (K <= s1 - s0 + 1) {
            i 
= T[i].lch; l = s0; r = s1; d++;
        } 
else {
            K 
-= (s1 - s0 + 1); if (l == l0) l = mid0 + 1else l = mid0 + sr[d][l - 1+ 1;
            r 
= mid0 + sr[d][r]; i = T[i].rch; d++;
        }
    }
}

【具體題目】PKU2104、PKU2761(兩道任選一道)

Feedback

# re: 劃分樹[未登錄]  回復  更多評論   

2012-08-04 20:29 by Victor
re3(i, l+1, r)
這是什么?
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产精品成人| 欧美人与性动交cc0o| 欧美黑人多人双交| 午夜精品成人在线| 99综合在线| 亚洲第一福利视频| 亚洲国产成人在线| 亚洲国产精品女人久久久| 最新亚洲电影| 在线视频精品一区| 午夜在线电影亚洲一区| 欧美亚洲一区| 免费欧美视频| 亚洲精品乱码久久久久久日本蜜臀| 亚洲电影自拍| 亚洲深夜福利| 久久久国产精品一区二区中文 | 亚洲精品小视频在线观看| 亚洲精品国精品久久99热| 亚洲视频二区| 蜜桃久久精品一区二区| 欧美网站在线| 亚洲第一精品夜夜躁人人爽 | 99国内精品久久久久久久软件| 一区二区三区高清在线观看| 欧美亚洲综合久久| 欧美激情精品久久久久| 国产欧美日韩精品专区| 亚洲精品中文字幕有码专区| 新狼窝色av性久久久久久| 欧美国产一区二区在线观看| 亚洲一区二区日本| 欧美国产日本在线| 狠狠色综合播放一区二区| 亚洲图色在线| 亚洲国产日韩一区| 久久久www成人免费精品| 欧美日韩一区二区高清| 亚洲第一成人在线| 久久免费99精品久久久久久| 在线亚洲自拍| 欧美日韩高清在线播放| 在线看片欧美| 久久久久久久网站| 亚洲在线播放| 国产精品视频99| 正在播放欧美一区| 亚洲成人资源| 久久阴道视频| 伊人色综合久久天天五月婷| 欧美一站二站| 亚洲伊人伊色伊影伊综合网| 欧美日韩国产色站一区二区三区| 狠狠色狠狠色综合日日91app| 国产精品久久久久久久久借妻 | 午夜久久美女| 亚洲精品网址在线观看| 免费欧美在线| 亚洲日本黄色| 亚洲国产精品久久久| 麻豆成人精品| 亚洲区第一页| 亚洲激情视频在线| 欧美精品久久久久久久久久| 亚洲精选国产| 亚洲免费久久| 国产精品久久久久免费a∨| 夜夜爽99久久国产综合精品女不卡| 久久伊人免费视频| 久久蜜桃av一区精品变态类天堂| 国内精品伊人久久久久av一坑| 欧美一区二区在线视频| 午夜伦理片一区| 红桃视频欧美| 亚洲二区在线| 欧美视频中文字幕| 久久国产精品久久精品国产| 久久成人免费| 日韩亚洲欧美一区二区三区| 亚洲精品中文字| 国产精品每日更新| 久久久久久综合| 欧美成人一区二区在线 | 亚洲午夜久久久久久久久电影院| 亚洲免费大片| 国产伦精品免费视频| 久久久999精品免费| 久久久一本精品99久久精品66| 亚洲激情成人在线| 99精品欧美一区二区三区| 国产欧美精品一区| 欧美国产日韩一二三区| 欧美三级网址| 久久夜色精品国产欧美乱极品 | 欧美日韩国产小视频在线观看| 亚洲制服少妇| 久久深夜福利| 亚洲自拍偷拍色片视频| 久久久久久久97| 亚洲图片欧洲图片av| 欧美在线免费播放| 亚洲精品日韩在线| 香蕉久久夜色精品国产使用方法| 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲精品日韩久久| 激情一区二区| 亚洲中字黄色| 一区二区三区国产精华| 久久免费精品日本久久中文字幕| 一区二区三区视频在线| 久久久久久穴| 在线日韩成人| 国产精品久久久一区二区三区| 久久精品30| 欧美日韩免费精品| 久久综合伊人| 国产精品素人视频| 亚洲啪啪91| 亚洲国产成人av在线| 午夜精品一区二区三区在线| 在线天堂一区av电影| 免费成人性网站| 免费观看在线综合色| 国产欧美日韩在线| 日韩视频永久免费观看| 亚洲乱码日产精品bd| 久久综合电影| 免费在线成人| 亚洲电影免费观看高清完整版| 欧美在线免费播放| 久久米奇亚洲| 曰韩精品一区二区| 久久精品九九| 美乳少妇欧美精品| 激情校园亚洲| 蜜桃av一区二区| 欧美黄色片免费观看| 亚洲国产欧美在线人成| 麻豆freexxxx性91精品| 欧美激情亚洲| 日韩网站在线观看| 欧美日韩视频不卡| 一区二区三区国产| 欧美一区免费视频| 国产一区二区欧美| 久久久999精品| 亚洲高清电影| 在线亚洲观看| 国产美女精品一区二区三区 | 亚洲激情一区二区三区| 一区视频在线| 欧美va天堂| 亚洲黑丝一区二区| 宅男精品视频| 国产亚洲精品v| 另类图片综合电影| 亚洲人成网站999久久久综合| 一区二区高清在线| 国产精品一区二区久久久久| 欧美一区午夜精品| 免费在线看一区| 99国产精品久久久久久久久久| 欧美日韩一区二区高清| 午夜精品理论片| 欧美成年人网| 亚洲欧美国产精品va在线观看| 国产午夜精品全部视频播放| 久久精选视频| 一本色道久久88亚洲综合88| 欧美在线视频日韩| 亚洲日本中文字幕| 国产精品免费网站在线观看| 久久久国产精品一区| 亚洲精品黄色| 久久成人18免费观看| 亚洲国产精品123| 国产精品美女视频网站| 久久亚洲美女| 亚洲少妇自拍| 欧美成人一品| 亚洲国产乱码最新视频| 一区二区三区|亚洲午夜| 国产私拍一区| 欧美日韩国产一区精品一区| 性做久久久久久久免费看| 91久久精品日日躁夜夜躁国产| 欧美一区二区三区视频在线| 亚洲精品国产视频| 国产日韩欧美三区| 欧美久久一级| 欧美在线视频日韩| 国产精品99久久不卡二区| 欧美激情精品久久久久久| 欧美伊久线香蕉线新在线| 中文国产成人精品久久一| 最新国产成人av网站网址麻豆| 国产一级揄自揄精品视频| 欧美午夜精品久久久久久超碰| 男人的天堂亚洲在线| 久久综合综合久久综合|