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

poj 3468 A Simple Problem with Integers 線段樹成段延遲更新

   用線段樹成段更新不能立即全部更新,必須搞延遲操作。其實,就是針對每個節點,另外搞一個域表示延遲
更新的數目。然后,在更新操作和查找操作的時候都把父親節點的延遲域往2個兒子走。
   這個題是要成段增加值,所以在寫PushDown函數的時候要注意,只能給兒子節點加上父親節點壓過來的值
乘以兒子區間的長度。這題貌似用樹狀數組也可以做,不過解法肯定意思不是那么直白的。不過速度肯定會快。
樹狀數組解法:http://kenby.iteye.com/blog/962159
   線段樹網上流行的解法都是開最多節點數目4倍的數組。以位置1作為根,每個位置其實代表的是一個區間。
某人位置1代表1-N或者0-(N-1)區間,具體看題目了。那么2就代表區間1-(1+N)/2,3就代表區間(1+N)/2+1 - N了。
   至于lazy標記還是搞個大數組,意義和線段樹數組一樣,搞清楚之后寫起來都比較簡單,最重要的是變形來
解決一些要求奇怪的題目。

   
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
typedef long long INT;

const INT MAX_N = 100010;
const INT INF = 0x7ffffffffffffffLL;
INT nTree[MAX_N << 2];
INT nAdd[MAX_N << 2];
INT nN, nQ;

void PushUp(INT nRt)
{
    nTree[nRt] = nTree[nRt << 1] + nTree[nRt << 1 | 1];
}

void BuildTree(INT nL, INT nR, INT nRt)
{
    nAdd[nRt] = 0;
    if (nL == nR)
    {
        scanf("%I64d", &nTree[nRt]);
        return;
    }
    
    INT nMid = (nL + nR) >> 1;
    BuildTree(nL, nMid, nRt << 1);
    BuildTree(nMid + 1, nR, nRt << 1 | 1);
    PushUp(nRt);
}

void PushDown(INT nL, INT nR, INT nRt)
{
    INT nMid = (nL + nR) >> 1;
    INT nLs = nRt << 1;
    INT nRs = nLs | 1;
    
    if (nAdd[nRt])
    {
        nAdd[nLs] += nAdd[nRt];
        nAdd[nRs] += nAdd[nRt];
        nTree[nLs] += (nMid - nL + 1) * nAdd[nRt];
        nTree[nRs] += (nR - nMid) * nAdd[nRt];
        nAdd[nRt] = 0;
    }
}

void Update(INT nL, INT nR, INT nRt, INT nX, INT nY, INT nV)
{
    if (nL >= nX && nR <= nY)
    {
        nTree[nRt] += nV * (nR - nL + 1);
        nAdd[nRt] += nV;
        return;
    }
    
    PushDown(nL, nR, nRt);
    INT nMid = (nL + nR) >> 1;
    if (nX <= nMid) Update(nL, nMid, nRt << 1, nX, nY, nV);
    if (nY > nMid) Update(nMid + 1, nR, nRt << 1 | 1, nX, nY, nV);
    PushUp(nRt);
}

INT Query(INT nL, INT nR, INT nRt, INT nX, INT nY)
{
    if (nL >= nX && nR <= nY)
    {
        return nTree[nRt];
    }
    PushDown(nL, nR, nRt);
    INT nAns = 0;
    INT nMid = (nL + nR) >> 1;
    if (nX <= nMid) nAns += Query(nL, nMid, nRt << 1, nX, nY);
    if (nY > nMid) nAns += Query(nMid + 1, nR, nRt << 1 | 1, nX, nY);
    return nAns;
}

int main()
{
    INT nTemp;
    while (scanf("%I64d%I64d", &nN, &nQ) == 2)
    {
        BuildTree(1, nN, 1);
        
        while (nQ--)
        {
            char szCmd[10];
            INT nX, nY, nV;
            scanf("%s", szCmd);
            if (szCmd[0] == 'Q')
            {
                scanf("%I64d%I64d", &nX, &nY);
                printf("%I64d\n", Query(1, nN, 1, nX, nY));
            }
            else
            {
                scanf("%I64d%I64d%I64d", &nX, &nY, &nV);
                Update(1, nN, 1, nX, nY, nV);
            }
        }
    }
    
    return 0;
}
   

posted on 2012-09-16 20:42 yx 閱讀(1388) 評論(0)  編輯 收藏 引用 所屬分類: 數據結構

<2012年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導航

統計

公告

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

me

好友

同學

網友

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久精品视频导航| 久久福利影视| 亚洲另类黄色| 亚洲综合99| 激情欧美丁香| 国产精品激情| 欧美日韩免费一区二区三区| 亚洲精品美女免费| 久久婷婷色综合| 99天天综合性| 一区二区毛片| 亚洲国产色一区| 国产综合第一页| 国产精品美女| 136国产福利精品导航网址| 韩国三级在线一区| 在线观看亚洲视频| 亚洲影院在线| 欧美亚洲在线| 欧美国产日韩二区| 亚洲国产精品成人综合色在线婷婷| 欧美国产日韩在线| 久久久噜噜噜久久中文字免| 欧美成人午夜视频| 欧美一区亚洲一区| 久久婷婷色综合| 欧美日韩亚洲一区二区三区在线 | 亚洲一区在线看| 韩国av一区二区三区在线观看| 国产日韩欧美精品| 亚洲国产一区二区a毛片| 亚洲高清av在线| 午夜精品久久久久久久白皮肤| 亚洲直播在线一区| 久久久久在线| 欧美一区成人| 亚洲国产精品成人精品| 香蕉乱码成人久久天堂爱免费| 亚洲精一区二区三区| 久久免费黄色| 91久久精品www人人做人人爽| 欧美一区二视频在线免费观看| 亚洲精品一区二区三区不| 亚洲男女自偷自拍| 欧美福利电影在线观看| 国产精品一卡二卡| 亚洲午夜日本在线观看| 亚洲国产欧美在线| 玖玖精品视频| 亚洲欧洲在线视频| 亚洲精品免费电影| 欧美日韩国产一区二区| 亚洲一区精品电影| 亚洲精品偷拍| 免费成人性网站| 亚洲欧美国产日韩中文字幕| 一区二区高清视频在线观看| 国产精品乱人伦中文| 欧美国产精品一区| 亚洲综合色网站| 欧美欧美午夜aⅴ在线观看| 久久全球大尺度高清视频| 欧美成人精品三级在线观看| 欧美日韩美女在线观看| 欧美精品久久久久a| 国产精品制服诱惑| 亚洲高清视频一区| 欧美在线在线| 亚洲美女视频在线免费观看| 欧美亚洲免费电影| 欧美日本亚洲韩国国产| 国产精品久久久久一区二区| 尤妮丝一区二区裸体视频| 一区二区欧美在线| 久久综合中文色婷婷| 欧美韩国一区| 久久国产视频网| 国产精品久久久| 亚洲欧美影音先锋| 在线视频你懂得一区| 另类专区欧美制服同性| 国产农村妇女毛片精品久久莱园子| 亚洲国产高清aⅴ视频| 久久精品道一区二区三区| 亚洲高清视频一区| 欧美一区精品| 国产精品www.| 一区二区三区色| 夜色激情一区二区| 国产精品国产自产拍高清av| 亚洲欧美韩国| 妖精成人www高清在线观看| 欧美日韩成人一区| 亚洲精品一区二| 亚洲精品国产精品乱码不99| 久久国产乱子精品免费女| 国产精品嫩草久久久久| 久久精品国产99精品国产亚洲性色| 欧美诱惑福利视频| 亚洲成人中文| 夜夜爽av福利精品导航| 国产精品羞羞答答xxdd| 久久久久久久性| 久久免费99精品久久久久久| 亚洲女人天堂成人av在线| 国产精品第13页| 午夜精品视频一区| 久久久综合精品| 欧美一区二区三区免费视| 欧美一区二视频| 亚洲激情视频网站| 亚洲免费观看视频| 国产麻豆一精品一av一免费| 久久精品首页| 欧美日韩国产在线| 久久影音先锋| 国产日韩一区二区| 欧美国产成人精品| 国产中文一区二区| 欧美激情在线狂野欧美精品| 国产精品一区二区三区久久久| 欧美韩日精品| 国产亚洲成av人片在线观看桃| 日韩亚洲欧美一区| 精品动漫一区二区| 性18欧美另类| 亚洲视频导航| 欧美激情综合| 欧美va天堂在线| 国产综合在线视频| 久久久青草青青国产亚洲免观| 性欧美xxxx大乳国产app| 欧美三级电影大全| 亚洲精品免费在线播放| 国产精品手机视频| 在线视频日韩精品| 亚洲一区二区三区高清不卡| 欧美高清视频一区| 久久综合网络一区二区| 韩日在线一区| 久久久美女艺术照精彩视频福利播放| 午夜精品久久久99热福利| 欧美午夜宅男影院| 一区二区三区日韩在线观看| 一个人看的www久久| 欧美日韩在线观看一区二区三区| 夜久久久久久| 亚洲女优在线| 一区二区三区在线高清| 老司机免费视频一区二区三区| 亚洲第一精品夜夜躁人人爽| 亚洲欧美日韩成人| 亚洲欧美视频在线观看| 国模一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲激情亚洲| 亚洲在线不卡| 夜夜精品视频| 国产乱码精品一区二区三区av| 久久精品视频免费播放| 亚洲第一天堂av| 9l视频自拍蝌蚪9l视频成人| 欧美视频在线观看免费| 久久不见久久见免费视频1| 麻豆精品精华液| 一区二区激情小说| 伊人久久大香线蕉综合热线| 欧美极品一区| 久久国产精品毛片| 亚洲影院免费| 在线视频欧美一区| 欧美a级一区| 老鸭窝91久久精品色噜噜导演| 亚洲午夜激情网页| 亚洲成色www8888| 国产欧美日韩一区| 国产精品久久久久久影视| 欧美韩日一区二区三区| 久久xxxx精品视频| 午夜欧美不卡精品aaaaa| 亚洲午夜免费视频| 亚洲精品小视频| 最新日韩精品| 久久精品亚洲精品| 亚洲一区二区三区在线看| 亚洲精品在线视频| 伊人成人开心激情综合网| 国产揄拍国内精品对白| 国产精品日本一区二区| 欧美日韩日日夜夜| 欧美精品手机在线| 国产精品美女久久久久久2018 | 久久日韩精品| 欧美中文字幕在线播放| 亚洲女人天堂av| 西瓜成人精品人成网站| 久久这里有精品视频| 老司机一区二区| 亚洲国产成人午夜在线一区| 亚洲免费av网站|