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

ACM___________________________

______________白白の屋
posts - 182, comments - 102, trackbacks - 0, articles - 0
<2015年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用鏈接

留言簿(24)

隨筆分類(332)

隨筆檔案(182)

FRIENDS

搜索

積分與排名

最新隨筆

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

今天學(xué)習(xí)了 樹(shù)狀數(shù)組, 自己小結(jié)下 :

 

簡(jiǎn)單介紹下 樹(shù)狀數(shù)組 :

        樹(shù)狀數(shù)組是一個(gè)查詢和修改復(fù)雜度都為log(n)的數(shù)據(jù)結(jié)構(gòu),假設(shè)數(shù)組a[1...n],那么查詢a[1] + …… + a[i] 的時(shí)間是log級(jí)別的,而且是一個(gè)在線的數(shù)據(jù)結(jié)構(gòu),支持隨時(shí)修改某個(gè)元素的值,復(fù)雜度也為log級(jí)別。

 

來(lái)觀察一下這個(gè)圖:

 


 

令這棵樹(shù)的結(jié)點(diǎn)編號(hào)為C1C2……Cn。令每個(gè)結(jié)點(diǎn)的值為這棵樹(shù)的值的總和,那么容易發(fā)現(xiàn):

C1 = A1

C2 = A1 + A2

C3 = A3

C4 = A1 + A2 + A3 + A4

C5 = A5

C6 = A5 + A6

C7 = A7

C8 = A1 + A2 + A3 + A4 + A5 + A6 + A7 + A8

……

C16 = A1 + A2 + A3 + A4 + A5 + A6 + A7 + A8 + A9 + A10 + A11 + A12 + A13 + A14 + A15 + A16

 

這里有一個(gè)有趣的性質(zhì),下午推了一下發(fā)現(xiàn):

設(shè)節(jié)點(diǎn)編號(hào)為x,那么這個(gè)節(jié)點(diǎn)管轄的區(qū)間為2^k(其中kx二進(jìn)制末尾0的個(gè)數(shù))個(gè)元素。因?yàn)檫@個(gè)區(qū)間最后一個(gè)元素必然為Ax,所以很明顯:

Cn = A(n – 2^k + 1) + …… + An

算這個(gè)2^k有一個(gè)快捷的辦法,定義一個(gè)函數(shù)如下即可:

int lowbit(int x){

return x & (x ^ (x – 1));

}

 

當(dāng)想要查詢一個(gè)SUM(n)時(shí),可以依據(jù)如下算法即可:

step1: 令sum = 0,轉(zhuǎn)第二步;

step2: 假如n <= 0,算法結(jié)束,返回sum值,否則sum = sum + Cn,轉(zhuǎn)第三步;

step3:  n = n – lowbit(n),轉(zhuǎn)第二步。

 

可以看出,這個(gè)算法就是將這一個(gè)個(gè)區(qū)間的和全部加起來(lái),為什么是效率是log(n)的呢?以下給出證明:

n = n – lowbit(n)這一步實(shí)際上等價(jià)于將n的二進(jìn)制的最后一個(gè)1減去。而n的二進(jìn)制里最多有log(n)個(gè)1,所以查詢效率是log(n)的。

 

那么修改呢,修改一個(gè)節(jié)點(diǎn),必須修改其所有祖先,最壞情況下為修改第一個(gè)元素,最多有log(n)的祖先。所以修改算法如下(給某個(gè)結(jié)點(diǎn)i加上x):

step1: 當(dāng)i > n時(shí),算法結(jié)束,否則轉(zhuǎn)第二步;

step2: Ci = Ci + x i = i + lowbit(i)轉(zhuǎn)第一步。

 

i = i +lowbit(i)這個(gè)過(guò)程實(shí)際上也只是一個(gè)把末尾1補(bǔ)為0的過(guò)程。

//修改過(guò)程必須滿足減法規(guī)則!

 

所以整個(gè)程序如下:

const int MAX = 50000;

#define lowbit(x) ((x)&(-x))

int com[ MAX + 1 ],N,T;

void modify ( int pos, int val ){

     while ( pos <= N ){

            com[pos] += val;

            pos = pos + lowbit(pos);  

     } 

}

int quy ( int x ){

    int sum = 0;

    while ( x > 0 ){

           sum = sum + com[x];

           x = x - lowbit(x);

    } 

    return sum;

}

初始化 :     for ( int i = 1; i <= N; ++ i ){

                       scanf ( "%d",&x );

                       modify ( i, x ); 

                 } 

------------------------------------------------------------------------------------

為什么要用樹(shù)狀數(shù)組 ?

 

原因如下: 

 

|  1. 首先我們得知道一個(gè)問(wèn)題,那就是線段樹(shù)得作用并

 

不只是用來(lái)存儲(chǔ)線段的,也可以存儲(chǔ)點(diǎn)的值等等.  


|  2. 對(duì)于靜態(tài)的線段樹(shù),空間上需要的數(shù)組有:當(dāng)前結(jié)點(diǎn)

 

的數(shù)據(jù)值,左兒子編號(hào),右兒子編號(hào).至少這么三個(gè)數(shù)組

 

    3. | 而在時(shí)間上雖然是NlogN的復(fù)雜度,但是系數(shù)很大.|

 

  4. 實(shí)現(xiàn)起來(lái)的時(shí)候編程復(fù)雜度大,空間復(fù)雜度大,時(shí)間

 

效率也不是很理想

 

 

 

 

 

 所以這個(gè)時(shí)候樹(shù)狀數(shù)組成了一個(gè)很好的選擇.

 

先看一個(gè)例題:

 

數(shù)列操作:

 

    給定一個(gè)初始值都為0的序列,動(dòng)態(tài)地修改一些 

 

位置上的數(shù)字,加上一個(gè)數(shù),減去一個(gè)數(shù),或者乘上

 

一個(gè)數(shù),然后動(dòng)態(tài)地提出問(wèn)題,問(wèn)題的形式是求出

 

一段數(shù)字的和. 

 

 

如果直接用樸素方法做的話,修改的復(fù)雜度是O(1), 

 

詢問(wèn)的復(fù)雜度是O(N),M次詢問(wèn)的復(fù)雜度是M*N.

 

M,N的范圍可以有100000以上!!!!

 

 

 

 有沒(méi)有更好的方法???

 

 

 

 呵呵, 肯定有啦, 就是我要說(shuō)的樹(shù)狀數(shù)組!!!  

 

具體的樹(shù)狀數(shù)組的解釋請(qǐng)看上面,  那么這個(gè)2k怎么求? 是怎么

 

來(lái)的?  

 

K的計(jì)算可以這樣:

 

|2k=x and (x & (x-1))

 

|6為例

 

|                (6)10=(0110)2

 

|xor    6-1=(5)10=(0101)2

 

|                         (0011)2

 

|and          (6)10=(0110)2

 

|                         (0010)2

 

所以: 

 

由數(shù)字的機(jī)器碼可以更簡(jiǎn)單的優(yōu)化成:  x & (-x)

 

對(duì)于上面那一題,每次修改與詢問(wèn)都是對(duì)C數(shù)組做處理.

 

空間復(fù)雜度有3N降為N,時(shí)間效率也有所提高.編程復(fù)雜

 

度更是降了不少.

 

 

 

 

 

 

 

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产伦精品一区二区三区免费迷| 久久久久看片| 国产精品视频一二| 欧美日韩一级黄| 欧美日韩午夜激情| 欧美日韩国产黄| 欧美日韩一区在线| 欧美激情一区在线| 久久国产精彩视频| 久久黄色级2电影| 久久精品成人一区二区三区| 亚欧美中日韩视频| 亚洲第一在线综合网站| 国产日韩精品在线观看| 国产日韩专区| 精品成人久久| 亚洲乱码国产乱码精品精可以看| 日韩视频精品在线观看| 午夜亚洲一区| 久久躁狠狠躁夜夜爽| 亚洲黄色在线视频| 亚洲剧情一区二区| 亚洲一区视频在线| 久久久久久综合网天天| 欧美精品福利在线| 国内精品一区二区三区| aa级大片欧美| 久久亚洲综合色| 99re热这里只有精品视频| 小黄鸭精品密入口导航| 欧美11—12娇小xxxx| 欧美四级在线观看| 激情久久中文字幕| 亚洲一区二区三区激情| 免费不卡欧美自拍视频| 欧美激情一区二区三区全黄| 久久在线播放| 欧美视频专区一二在线观看| 国产欧美日韩另类一区| 亚洲图片欧美日产| 久久精品天堂| 国产精品老女人精品视频| 黄色一区二区在线| 亚洲一区中文| 欧美国产欧美综合| 中文精品在线| 欧美日韩1区2区| 亚洲第一页中文字幕| 久久久精品久久久久| 一个色综合av| 欧美不卡视频一区发布| 亚洲成人资源网| 欧美日韩精品一区视频| 欧美伊人久久大香线蕉综合69| 久久免费国产精品| 亚洲精品影视在线观看| 欧美在线不卡| 欧美性理论片在线观看片免费| 极品日韩久久| 亚洲综合大片69999| 欧美大片va欧美在线播放| 久久都是精品| 一区二区三区我不卡| 久久久成人网| 亚洲小视频在线观看| 国产精品高清在线| 亚洲综合视频一区| 久久久中精品2020中文| 欧美在线播放高清精品| 一区二区动漫| 欧美精品一区在线观看| 黑人巨大精品欧美一区二区| 久久久久久伊人| 一二美女精品欧洲| 国产精品成人一区二区网站软件| 91久久精品美女| 农村妇女精品| 久久国产精品黑丝| 欧美性猛交一区二区三区精品| 亚洲自拍偷拍一区| 欧美在线一二三区| 一区二区在线免费观看| 欧美成人精品在线视频| 欧美成人高清| aa国产精品| 亚洲自拍偷拍福利| 国产毛片久久| 毛片精品免费在线观看| 老司机午夜精品视频在线观看| 亚洲欧洲日韩在线| 99视频超级精品| 国产一区二区精品丝袜| 美女诱惑黄网站一区| 久久亚洲精品网站| 久久久亚洲午夜电影| 国产精品九色蝌蚪自拍| 亚洲第一精品夜夜躁人人躁| 欧美a级片网站| 欧美日韩国产欧| 国产精品综合不卡av| 午夜视频久久久| 欧美中文字幕在线播放| 狠狠干综合网| 亚洲美女视频| 国产中文一区二区| 久色成人在线| 欧美国产日韩在线观看| 99在线精品视频| 中文在线一区| 亚洲国产一区二区三区青草影视| 亚洲高清在线观看一区| 国产精品分类| 亚洲激情第一页| 国产在线拍揄自揄视频不卡99| 欧美成人在线影院| 国产欧美在线观看| 亚洲免费成人| 亚洲精品欧美激情| 久久人人97超碰国产公开结果| 亚洲欧美综合网| 欧美人牲a欧美精品| 欧美成人免费视频| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲网站视频福利| 一区电影在线观看| 欧美激情视频网站| 欧美成人综合| 在线观看亚洲精品视频| 欧美一区成人| 欧美一区二区精品| 国产精品久久久久久久久久久久久| 亚洲国产一区视频| 亚洲三级电影全部在线观看高清| 久久久久中文| 美女性感视频久久久| 黑人操亚洲美女惩罚| 欧美在线视频二区| 久久亚洲精品视频| 国产一区 二区 三区一级| 欧美在线播放视频| 性欧美办公室18xxxxhd| 国产精品福利在线观看网址| 日韩小视频在线观看| 夜夜嗨av色一区二区不卡| 欧美日韩国产影院| 日韩视频免费在线| 亚洲欧美日韩在线播放| 国产精品免费一区二区三区在线观看 | 欧美一区二区视频97| 午夜免费日韩视频| 国产精品一页| 亚洲主播在线| 性做久久久久久久免费看| 国产精品理论片在线观看| 在线亚洲美日韩| 欧美一区三区二区在线观看| 国产乱码精品一区二区三| 欧美亚洲在线| 久久久久国色av免费观看性色| 国产资源精品在线观看| 久久人人97超碰国产公开结果| 亚洲第一天堂无码专区| 国产精品99久久久久久久久久久久 | 亚洲精品午夜精品| 欧美激情精品久久久久久黑人| 欧美精品一区二区三区在线播放 | 欧美激情视频一区二区三区免费| 亚洲理论电影网| 欧美日韩一区二区三| 亚洲欧美日本日韩| 欧美高清视频一区二区| 亚洲午夜视频| 国色天香一区二区| 欧美激情在线播放| 午夜亚洲影视| 亚洲精品视频在线观看网站| 久久www成人_看片免费不卡| 亚洲区第一页| 国产欧美亚洲一区| 欧美片第1页综合| 欧美一区二区三区免费观看视频| 欧美福利一区二区| 久久国产精品色婷婷| 日韩一级黄色av| 一区二区三区无毛| 欧美日韩综合久久| 久久久久在线观看| 亚洲欧美日韩精品久久亚洲区| 亚洲国产成人不卡| 亚洲欧美在线免费观看| 一区视频在线| 国产精品视频精品视频| 欧美大片在线影院| 欧美在线视频不卡| 亚洲欧美日韩精品久久奇米色影视 | 在线亚洲高清视频| 亚洲福利免费| 麻豆精品视频在线观看| 午夜欧美大尺度福利影院在线看| 亚洲国产免费看|