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

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>
            久久米奇亚洲| 亚洲福利在线视频| 性8sex亚洲区入口| 欧美韩日视频| 午夜久久美女| 国产精品五月天| 亚洲一区二区3| 日韩一级不卡| 欧美三级电影大全| 一区二区三区久久久| 亚洲高清在线视频| 欧美国产日韩精品| 亚洲精品久久久久久久久久久久| 欧美大片第1页| 欧美77777| 亚洲精品黄网在线观看| 91久久国产综合久久91精品网站| 欧美二区在线| av成人福利| 一区二区三区偷拍| 国产伦精品一区二区三区| 久久精品国产精品亚洲综合| 久久av一区二区三区漫画| 玉米视频成人免费看| 欧美激情视频免费观看| 欧美日韩成人在线| 香蕉久久久久久久av网站| 欧美一区二区福利在线| 亚洲国产成人精品女人久久久| 亚洲电影欧美电影有声小说| 欧美日本国产一区| 午夜视频一区在线观看| 久久久久91| 99re66热这里只有精品4| 在线一区二区三区四区五区| 国产一区二区| 最近看过的日韩成人| 国产精品美女久久久浪潮软件| 久久久久九九九| 欧美激情一区二区三区在线| 午夜在线a亚洲v天堂网2018| 久久激情五月婷婷| 亚洲精品中文字幕有码专区| 亚洲一区二区三区久久| …久久精品99久久香蕉国产| 一区二区三区久久久| 经典三级久久| 亚洲精品自在久久| 国产亚洲福利社区一区| 亚洲黄色免费电影| 国产美女精品视频| 亚洲国产网站| 国产女主播一区二区三区| 欧美福利精品| 国产欧美日韩三区| 亚洲精品一区中文| 黄色成人在线免费| 亚洲神马久久| 日韩亚洲欧美成人一区| 久久国产精品久久久久久电车| 99人久久精品视频最新地址| 欧美在线影院| 午夜精品久久久99热福利| 免费观看成人www动漫视频| 性娇小13――14欧美| 欧美精品在线网站| 久久综合伊人| 国产日韩精品一区二区| 99视频日韩| 亚洲最新色图| 欧美激情精品久久久久久变态| 久久九九电影| 国产日本欧美在线观看| 亚洲视屏在线播放| 亚洲精品久久久蜜桃| 久久精品国产亚洲高清剧情介绍| 亚洲专区一二三| 欧美日韩三级一区二区| 亚洲激情在线| 日韩图片一区| 模特精品在线| 欧美成年人网站| 在线日韩av永久免费观看| 欧美一区二区精品久久911| 欧美一区二区三区在线免费观看| 国产精品久久久久久久app | 久久国产精品久久国产精品| 亚洲免费在线观看视频| 欧美日韩亚洲高清| 日韩午夜中文字幕| 夜夜嗨一区二区| 欧美日韩一区二区在线| 一本久久综合亚洲鲁鲁| 亚洲制服av| 国产欧美日韩一区| 久久国内精品自在自线400部| 久久综合免费视频影院| 精品88久久久久88久久久| 久久精品论坛| 欧美高清在线一区二区| 亚洲精品国产精品久久清纯直播 | 亚洲承认在线| 男女激情久久| 亚洲国产cao| 一区二区免费在线播放| 国产精品国产亚洲精品看不卡15| 一本色道久久综合精品竹菊 | 久久久久国产精品一区三寸| 国内精品久久久久影院 日本资源 国内精品久久久久伊人av | 国产片一区二区| 欧美在线91| 亚洲第一精品久久忘忧草社区| 亚洲看片网站| 国产精品久久久久影院亚瑟| 久久成年人视频| 亚洲成色777777在线观看影院| 日韩一区二区精品| 国产伦精品一区二区三区免费| 久久九九久精品国产免费直播| 欧美电影免费观看高清完整版| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲国产精品一区二区三区| 日韩视频专区| 国产日韩欧美一区二区三区在线观看 | 久久夜色精品国产欧美乱极品| 在线不卡视频| 欧美三级电影网| 性欧美video另类hd性玩具| 男人的天堂成人在线| 国产精品99久久久久久久久| 国产午夜亚洲精品不卡| 性久久久久久久久| 韩国成人福利片在线播放| 欧美精品免费播放| 欧美在线观看网站| 日韩小视频在线观看专区| 久久久精品一品道一区| 中文亚洲欧美| 亚洲高清123| 国产精品久久午夜| 免播放器亚洲| 午夜综合激情| 一本色道久久综合| 欧美国产高清| 久久久久久久久久久一区| 一区二区三区久久网| 影音先锋久久| 国产免费成人在线视频| 亚洲成色777777女色窝| 欧美亚洲一区二区三区| 99国产精品久久| 在线成人性视频| 国产美女精品| 国产精品成人观看视频国产奇米| 欧美插天视频在线播放| 欧美综合激情网| 亚洲午夜久久久久久久久电影网| 亚洲国产福利在线| 久久综合色天天久久综合图片| 午夜欧美大片免费观看| 9色精品在线| 亚洲人成久久| 亚洲国产精品欧美一二99| 一区视频在线看| 在线免费一区三区| 一区免费在线| 在线观看一区视频| 韩国av一区二区| 国产在线不卡| 韩国亚洲精品| 黄色小说综合网站| 国产亚洲欧美一区| 久久精品亚洲| 欧美一区二区三区精品电影| 亚洲综合国产| 午夜视频精品| 欧美亚洲视频在线观看| 亚洲欧美日韩一区在线| 午夜国产精品视频| 欧美一区二区三区在线免费观看| 亚洲欧美成aⅴ人在线观看| 亚洲午夜av电影| 亚洲一区二区三区三| 亚洲欧美精品| 久久久久久久国产| 免费在线国产精品| 欧美日韩免费高清| 国产精品理论片| 国产一区二区三区日韩| 一色屋精品亚洲香蕉网站| 亚洲国产精品第一区二区| 亚洲美女毛片| 亚洲欧美在线免费| 久久久噜噜噜| 欧美夫妇交换俱乐部在线观看| 亚洲精品国产精品国产自| 一区二区三区.www| 久久精品成人一区二区三区| 欧美sm重口味系列视频在线观看| 欧美日韩国产综合新一区|