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

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年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

導航

統計

公告

常用鏈接

留言簿(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>
            国产日韩欧美一区在线| 亚洲一区成人| 亚洲欧美日韩精品久久| 亚洲欧美日韩在线高清直播| 亚洲欧美在线视频观看| 欧美伊人久久| 欧美大片免费久久精品三p| 噜噜噜久久亚洲精品国产品小说| 美女免费视频一区| 亚洲精品免费一二三区| 99riav久久精品riav| 亚洲欧美网站| 欧美电影打屁股sp| 国产精品视频xxxx| 最近看过的日韩成人| 亚洲专区国产精品| 狂野欧美一区| 日韩性生活视频| 久久国产精品久久久久久| 免费h精品视频在线播放| 欧美亚一区二区| 在线国产精品一区| 亚洲欧美成人一区二区三区| 你懂的国产精品永久在线| 一区二区免费在线播放| 看片网站欧美日韩| 国产人成一区二区三区影院| 亚洲一区二区少妇| 欧美成人精品在线播放| 国产精品久久久久一区二区三区共 | 国产精品综合久久久| 亚洲黄网站黄| 久久久久久久久久久久久久一区 | 国产一区二区日韩精品欧美精品 | 小处雏高清一区二区三区 | 亚洲视频在线一区| 久久色在线观看| 国产美女精品视频| 亚洲午夜国产成人av电影男同| 免费在线观看日韩欧美| 亚洲欧美日本在线| 国产精品a级| 一区二区三区国产在线| 亚洲电影第1页| 久久伊人亚洲| 极品尤物久久久av免费看| 欧美在线一级视频| 亚洲欧美成人| 国产区精品在线观看| 亚洲欧美日韩人成在线播放| 一本色道久久综合亚洲精品按摩| 欧美韩国日本综合| 亚洲精品视频一区二区三区| 欧美激情视频网站| 老司机精品视频一区二区三区| 精品1区2区| 欧美.日韩.国产.一区.二区| 另类激情亚洲| 亚洲激情专区| 亚洲精品久久久久久久久久久久| 欧美激情91| 99综合视频| 亚洲午夜精品福利| 国产亚洲激情视频在线| 麻豆精品一区二区av白丝在线| 久久人人97超碰国产公开结果| 在线不卡a资源高清| 欧美激情国产精品| 欧美日韩午夜| 欧美在线免费一级片| 久久精品国产综合精品| 一区精品在线播放| 亚洲黄色大片| 国产精品女同互慰在线看| 久久蜜桃香蕉精品一区二区三区| 免费欧美电影| 欧美va天堂| 亚洲欧美日韩精品| 久久精品视频播放| 亚洲美洲欧洲综合国产一区| 亚洲小视频在线| 精品动漫3d一区二区三区| 亚洲黄色小视频| 国产精品一区视频网站| 欧美国产日韩一区| 国产精品爱久久久久久久| 久久婷婷久久| 欧美午夜视频在线观看| 久久躁日日躁aaaaxxxx| 欧美日韩精品系列| 久久综合影视| 国产精品久久久对白| 欧美顶级艳妇交换群宴| 国产精品美女久久久免费| 欧美mv日韩mv国产网站| 国产精品国产| 亚洲国产日韩欧美在线99| 国产日韩一级二级三级| 亚洲久久在线| 亚洲福利电影| 欧美一级视频一区二区| 亚洲线精品一区二区三区八戒| 久久美女性网| 久久精品99| 国产精品久久久久毛片大屁完整版 | 亚洲日本欧美在线| 亚洲天堂第二页| 亚洲日本乱码在线观看| 欧美中文字幕久久| 亚洲欧美日韩网| 欧美日本高清视频| 免费看黄裸体一级大秀欧美| 国产老肥熟一区二区三区| 亚洲免费观看| 亚洲精品一区在线观看| 欧美中文字幕视频| 欧美亚洲一区在线| 国产精品va在线播放| 亚洲国产综合在线看不卡| 亚洲电影免费观看高清完整版| 欧美一区二区三区免费在线看| 亚洲欧美在线看| 国产精品啊啊啊| 一区二区三区四区精品| 一区二区三区偷拍| 欧美日韩中文精品| 99ri日韩精品视频| 亚洲影院免费| 国产精品久久久久国产精品日日| 一本到12不卡视频在线dvd| 99精品视频免费| 欧美美女bb生活片| 亚洲乱码国产乱码精品精天堂| 99视频一区二区| 欧美日韩国产专区| 99re热这里只有精品视频| 日韩视频一区二区三区在线播放 | 欧美日韩一区二区三区高清| 亚洲精品久久久蜜桃 | 国产精品jizz在线观看美国 | 亚洲丰满少妇videoshd| 亚洲国产精品悠悠久久琪琪| 欧美成人影音| 一本大道av伊人久久综合| 午夜精品久久久久影视| 国产真实乱子伦精品视频| 久久免费99精品久久久久久| 欧美成人资源| 一区二区三区www| 国产精品入口66mio| 久久狠狠久久综合桃花| 欧美国产日韩亚洲一区| 亚洲无线视频| 国产一区二区三区最好精华液| 久久精品天堂| 亚洲精品日韩精品| 午夜精品亚洲| 亚洲国产高清一区二区三区| 欧美日韩国产123区| 亚洲欧美日韩爽爽影院| 欧美成人国产一区二区| 日韩亚洲欧美综合| 国产女优一区| 欧美国产综合一区二区| 亚洲欧美日韩精品久久久| 免费在线国产精品| 亚洲视频网在线直播| 国产专区欧美专区| 欧美日产在线观看| 久久av二区| 一本大道久久a久久精品综合 | 亚洲韩国精品一区| 欧美亚洲日本国产| 91久久国产综合久久91精品网站| 国产精品二区三区四区| 久久伊人一区二区| 亚洲综合日韩中文字幕v在线| 欧美1区免费| 欧美一区二区三区在线免费观看| 亚洲国产视频直播| 国产一区二区按摩在线观看| 欧美男人的天堂| 久久久久www| 亚洲一级免费视频| 亚洲精品久久久一区二区三区| 久久久久久亚洲综合影院红桃 | 欧美日本在线观看| 久久久久久夜精品精品免费| 亚洲永久免费| 99热这里只有成人精品国产| 欧美国产日韩视频| 久久在线视频| 久久精品国产69国产精品亚洲| 亚洲一区二区三区四区五区黄| 亚洲国产一区二区三区a毛片| 国产毛片久久| 国产精品午夜国产小视频| 欧美日韩小视频| 欧美精品 国产精品| 欧美freesex交免费视频|