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

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>
            国产精品一区久久久久| 一区二区三区国产精品| 亚洲三级影片| 亚洲欧洲一区| 亚洲精品自在久久| 一区二区精品国产| 亚洲自拍偷拍色片视频| 性视频1819p久久| 久久国产直播| 欧美成人精品在线| 亚洲欧洲精品一区二区三区| 欧美高清不卡在线| 亚洲毛片av在线| 亚洲一区二区三区四区五区午夜 | 国产一区白浆| 亚洲福利国产精品| 一区二区三区.www| 久久精品中文字幕一区| 欧美福利一区二区三区| 在线中文字幕一区| 久久精品官网| 欧美日韩精品一区二区在线播放 | 一区二区日韩精品| 亚洲欧美日韩一区| 欧美大片在线观看一区二区| 亚洲巨乳在线| 性色av一区二区怡红| 欧美成人国产va精品日本一级| 欧美日韩一区二区在线视频| 国产日韩欧美三级| 日韩一级大片在线| 久久免费精品视频| 一区二区三区av| 久久久久一本一区二区青青蜜月| 欧美成人午夜影院| 精品成人一区二区三区四区| 亚洲视频每日更新| 欧美成人免费观看| 欧美亚洲一级| 国产精品视频观看| 99精品视频一区| 欧美成人精品在线| 欧美在现视频| 国产精品高潮视频| 日韩午夜激情| 欧美激情第三页| 久久国产精品毛片| 国产欧美精品日韩区二区麻豆天美| 亚洲欧洲美洲综合色网| 久久天天狠狠| 亚洲一区二区三区国产| 欧美日韩一区精品| 亚洲香蕉成视频在线观看| 欧美大片第1页| 久久久九九九九| 激情五月婷婷综合| 麻豆国产精品一区二区三区 | 欧美人妖另类| 亚洲区国产区| 蜜月aⅴ免费一区二区三区| 性欧美1819性猛交| 国产伦精品一区二区三区视频孕妇| 亚洲图片欧洲图片av| 亚洲精品资源| 欧美日韩你懂的| 亚洲图片欧洲图片av| 亚洲精品永久免费| 欧美国产乱视频| 日韩午夜在线| 亚洲激情中文1区| 欧美喷潮久久久xxxxx| 中文国产成人精品久久一| 亚洲精品一区二区三区av| 欧美日韩国产亚洲一区 | 久久久久久久久久码影片| 欧美一级在线播放| 一区二区在线不卡| 欧美激情第三页| 欧美国产视频日韩| 亚洲一区二区三区777| 在线综合+亚洲+欧美中文字幕| 欧美日韩情趣电影| 香蕉精品999视频一区二区| 欧美亚洲在线观看| 樱桃视频在线观看一区| 欧美成人精品h版在线观看| 欧美激情精品久久久久久蜜臀 | 久久精品首页| 另类天堂av| 99国产精品久久久久老师| 一区二区三区成人精品| 国产日韩精品在线观看| 免费不卡视频| 国产精品大片wwwwww| 久久精品99国产精品酒店日本| 久久精品免费看| 99精品欧美一区二区蜜桃免费| 亚洲桃色在线一区| 亚洲欧洲精品一区二区三区不卡| 一本大道久久精品懂色aⅴ| 国产亚洲精品美女| 最新国产の精品合集bt伙计| 国产精品户外野外| 欧美成人中文字幕| 国产精品一二| 亚洲春色另类小说| 国产日韩在线不卡| 亚洲精品在线观| 尤妮丝一区二区裸体视频| avtt综合网| 亚洲精品久久视频| 香蕉久久夜色精品国产| 99视频精品免费观看| 午夜精品福利在线观看| 日韩午夜免费| 久久人人爽人人爽| 久久爱www.| 国产精品你懂的在线| 亚洲精品1区2区| 在线电影国产精品| 久久成人免费电影| 午夜精彩国产免费不卡不顿大片| 女生裸体视频一区二区三区| 久久久久国产精品一区| 国产精品久久久久久久久久ktv| 亚洲国产精品日韩| 亚洲高清不卡在线| 久久久xxx| 久久一区亚洲| 在线观看日韩国产| 久久久之久亚州精品露出| 久久久国产精品一区二区中文| 国产精品入口夜色视频大尺度| 亚洲最黄网站| 亚洲免费在线播放| 国产精品美腿一区在线看 | 午夜在线成人av| 欧美日韩小视频| 亚洲欧洲日本专区| 日韩视频一区二区三区在线播放免费观看 | 久久精品国产第一区二区三区最新章节| 欧美精品aa| 亚洲精品小视频| 一区二区三区黄色| 欧美日韩一区二区视频在线| 一本色道久久精品| 亚洲欧美日韩国产一区| 国产精品家庭影院| 亚洲一区网站| 久久福利资源站| 一区二区三区在线不卡| 久久精品国产精品亚洲综合| 久久久久久久久久码影片| 影音先锋中文字幕一区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲精品乱码久久久久| 一本久道久久综合狠狠爱| 欧美人在线视频| 亚洲精品社区| 午夜精品一区二区三区四区| 国产精品视频999| 欧美在线一区二区三区| 麻豆精品精华液| 在线亚洲观看| 国产农村妇女毛片精品久久莱园子| 午夜伦理片一区| 欧美激情综合| 亚洲欧美日韩视频一区| 一区二区在线看| 欧美精品久久一区| 亚洲一二三级电影| 久久婷婷丁香| 国产精品99久久久久久人| 国产精品一二三四区| 毛片av中文字幕一区二区| 一区二区免费在线观看| 久久婷婷国产综合精品青草| 99在线精品观看| 国语自产精品视频在线看| 欧美顶级艳妇交换群宴| 亚洲视频 欧洲视频| 美女网站在线免费欧美精品| 亚洲一级片在线观看| 一区在线免费观看| 欧美日韩免费观看一区三区 | 欧美国产视频一区二区| 午夜在线一区| 亚洲三级视频在线观看| 久久免费国产| 午夜精品久久久久久99热软件| 亚洲高清免费| 国产欧美一区二区色老头| 欧美精品一区二区精品网| 久久精品99无色码中文字幕| 9久草视频在线视频精品| 欧美高清在线视频| 久久久精品一区| 欧美一区二区大片| 在线视频日韩精品| 亚洲狠狠丁香婷婷综合久久久|