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

C小加

厚德 博學 求真 至善 The bright moon and breeze
posts - 145, comments - 195, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
區間更新,區間求和。C的時候在區間[a,b]之間,每個元素增加一個c。Q的時候求出[a,b]區間元素的和。
思路:線段樹。增加一個增量屬性add,更新到范圍內的時候刷新add和value的值,這個時候不再向下傳遞,如果需要向下更新或者向下詢問的時候,更新節點兩個子樹的add和value屬性,這樣需要用的到時候再更新會提高效率。


#include
<iostream>
#include
<cstdio>
#include
<cstring>
using namespace std;
const int MAXN=100003;
long long sum;
inline 
int L(int r){return r<<1;}
inline 
int R(int r){return (r<<1)+1;}
inline 
int MID(int l,int r){return (l+r)>>1;}
typedef 
struct
{
    
int left,right;
    
long long value,add;
}node;
node tree[MAXN
*4];
long long arr[MAXN];
void Update(int);
void Create(int l,int r,int root)
{
    tree[root].left
=l;
    tree[root].right
=r;
    tree[root].add
=0;
    
if(l==r) {tree[root].value=arr[l];return;}
    
int mid =MID(l,r);
    Create(l,mid,L(root));
    Create(mid
+1,r,R(root));
    tree[root].value
=tree[L(root)].value+tree[R(root)].value;
}
void Add(int l,int r,long long v,int root)
{
    
if(l<=tree[root].left&&tree[root].right<=r)
    {
        tree[root].add
+=v;
        tree[root].value
+=v*(tree[root].right-tree[root].left+1);
        
return;
    }
    Update(root);
    
if(tree[root].left==tree[root].right) {return;}
    
int mid=MID(tree[root].left,tree[root].right);
    
if(l>mid) Add(l,r,v,R(root));
    
else if(r<=mid) Add(l,r,v,L(root));
    
else
    {
        Add(l,mid,v,L(root));
        Add(mid
+1,r,v,R(root));
    }
    tree[root].value
=tree[L(root)].value+tree[R(root)].value;

}
void Update(int node)//更新節點,把大區間的增值傳給小區間,給小區間的值加上增量
{
    
if(tree[node].add)
    {
        tree[L(node)].add
+=tree[node].add;//更新子樹時會用到
        tree[R(node)].add+=tree[node].add;
        tree[L(node)].value
+=(tree[L(node)].right-tree[L(node)].left+1)*tree[node].add;//這時候的值就是區間和
        tree[R(node)].value+=(tree[R(node)].right-tree[R(node)].left+1)*tree[node].add;
        tree[node].add
=0;
    }
}

void Solve(int l,int r,int root)
{
    
if(l<=tree[root].left&&tree[root].right<=r)
    {
            sum
+=tree[root].value;
            
return;

    }
    Update(root);

    
if(tree[root].left==tree[root].right) return;
    
int mid=MID(tree[root].left,tree[root].right);
    
if(l>mid) Solve(l,r,R(root));
    
else if(r<=mid) Solve(l,r,L(root));
    
else
    {
        Solve(l,mid,L(root));
        Solve(mid
+1,r,R(root));
    }

}

int main()
{
    
//freopen("input","r",stdin);
    int m,n;
    
while(scanf("%d %d",&m,&n)!=EOF)
    {
        
for(int i=1;i<=m;i++)
        {
            scanf(
"%lld",arr+i);
        }
        Create(
1,m,1);
        
char c[2];
        
while(n--)
        {
            scanf(
"%s",c);
            
if('C'==c[0])
            {
                
int l,f;
                
long long v;
                scanf(
"%d %d %lld",&l,&f,&v);
                Add(l,f,v,
1);
            }
            
else
            {
                
int l,f;
                scanf(
"%d %d",&l,&f);
                sum
=0;
                Solve(l,f,
1);
                printf(
"%lld\n",sum);
            }
        }
    }



    
return 0;
}
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 欧美精品在线免费| 最新国产乱人伦偷精品免费网站| 亚洲国产精品福利| 日韩网站在线观看| 狠狠色伊人亚洲综合网站色| 欧美激情第10页| 久久精品国产99国产精品| 欧美福利一区二区| 亚洲视频导航| 亚洲欧美日韩国产综合精品二区| 亚洲免费观看在线观看| 在线日韩精品视频| 黑人一区二区三区四区五区| 欧美日韩dvd在线观看| 欧美图区在线视频| 欧美视频在线观看| 国产精品国产三级国产专区53 | 久久精品亚洲一区二区三区浴池| 久久亚洲私人国产精品va| 欧美一区二区三区在线播放| 欧美一区在线视频| 欧美伊人久久久久久久久影院 | 久久免费一区| 中文在线一区| 欧美主播一区二区三区| 欧美一区在线视频| 久久婷婷麻豆| 欧美日韩国产不卡在线看| 在线观看成人av电影| 欧美一区中文字幕| 亚洲成人在线网站| 一区二区日韩| 中日韩在线视频| 一本一本久久a久久精品综合妖精| 老司机免费视频久久| 一区二区国产日产| 久久精品伊人| 国产精品乱码一区二三区小蝌蚪| 国产日韩高清一区二区三区在线| 香蕉尹人综合在线观看| 亚洲激情国产| 欧美中文在线观看国产| 欧美精品啪啪| 欧美激情bt| 久久久天天操| 欧美日韩国产在线看| 亚洲欧美激情四射在线日| 欧美大片一区二区| 欧美一区免费| 国产亚洲欧美另类中文| 午夜精品久久久久久久久| 99视频超级精品| 欧美日韩国产在线一区| 亚洲狼人综合| 欧美日韩精品一区| 久久精品国产久精国产爱| 欧美69视频| 亚洲国产人成综合网站| 久久看片网站| 欧美黑人在线播放| 亚洲精品日韩激情在线电影| 老司机精品视频网站| 99精品视频免费观看视频| 亚洲激情小视频| 欧美精品久久99| 亚洲欧美怡红院| 亚洲欧美日韩国产综合| 免费在线观看精品| 999亚洲国产精| 性高湖久久久久久久久| 国产亚洲制服色| 亚洲成在线观看| 国产精品理论片在线观看| 一区二区三区三区在线| 亚洲精品乱码久久久久久黑人| 一本色道久久88综合日韩精品| 国产精品久久夜| 亚洲国产合集| 影院欧美亚洲| 亚洲欧美日本日韩| 亚洲欧美日韩国产中文| 欧美a级片网| 久久精品官网| 国产麻豆91精品| 亚洲一区二区三区欧美| 亚洲品质自拍| 国产精品美女诱惑| 一区二区电影免费在线观看| 亚洲动漫精品| 久久久久久久久久久成人| 中文国产一区| 亚洲乱码国产乱码精品精98午夜| 国产一区二区高清| 亚洲乱码国产乱码精品精天堂 | 国内欧美视频一区二区| 香蕉久久一区二区不卡无毒影院| 亚洲精品少妇30p| 欧美激情一区二区三区在线视频观看| 一区二区三区国产精品| 久久久精品tv| 狠狠色丁香久久综合频道 | 国产精品一二| 欧美亚洲在线观看| 欧美91精品| 亚洲主播在线观看| 国产精品一区二区久久久久| 久久精品免费播放| 亚洲欧美电影院| 欧美黄污视频| 亚洲永久在线| 黑人操亚洲美女惩罚| 每日更新成人在线视频| 在线亚洲欧美视频| 在线观看欧美日韩国产| 国产精品国产三级国产a| 欧美不卡视频一区| 久久综合九色综合久99| 久久国产精品久久久| 欧美一区二区三区四区高清| 亚洲欧美99| 欧美伊人久久久久久午夜久久久久 | 欧美日韩综合另类| 美女精品网站| 欧美激情国产高清| 91久久久一线二线三线品牌| 欧美一区二区三区在线视频 | 亚洲黑丝在线| 国产精品久在线观看| 亚洲在线播放电影| 欧美国产一区在线| 欧美成人一区二区在线| 亚洲视频你懂的| 亚洲一级黄色片| 久久九九久久九九| 亚洲欧美成人网| 欧美大胆人体视频| 欧美黑人国产人伦爽爽爽| 亚洲日韩成人| 欧美在线视频导航| 欧美国产精品日韩| 国产精品毛片| 国产日韩精品电影| 9色porny自拍视频一区二区| 欧美亚洲一区在线| 性久久久久久久久| 欧美伊久线香蕉线新在线| 久久久久综合一区二区三区| 亚洲精品乱码久久久久久按摩观| 亚洲综合三区| 欧美激情四色 | 国产精品久久久999| 狠狠色狠狠色综合日日五| 欧美一区二区三区视频免费| 一区二区不卡在线视频 午夜欧美不卡在| 欧美伊人久久久久久久久影院| 欧美日韩一卡| 一区二区三区鲁丝不卡| 国产精品白丝黑袜喷水久久久| 99国产精品99久久久久久粉嫩| 亚洲电影毛片| 久久精品国产亚洲一区二区三区| 国产视频亚洲| 亚洲美女区一区| 久久综合久久综合久久| 欧美在线观看你懂的| 欧美韩国日本综合| 免费一级欧美在线大片| 亚洲欧美日韩中文在线制服| 亚洲国内精品在线| 欧美精品福利| 亚洲欧美在线播放| 中文在线一区| 欧美久久一区| 久久精品国产v日韩v亚洲| 久久国产黑丝| 国产欧美日韩另类视频免费观看| 亚洲欧美激情精品一区二区| 欧美亚洲一级| 亚洲午夜激情| 亚洲欧美国产三级| 亚洲高清视频一区二区| 亚洲午夜激情免费视频| 亚洲午夜高清视频| 亚洲欧美精品一区| 亚洲免费在线播放| 欧美国产国产综合| 午夜日韩激情| 欧美日韩国产三区| 欧美承认网站| 99精品久久久| 久久精品国产免费观看| 亚洲欧美高清| 国产精品日韩| 亚洲毛片av| 欧美亚洲一区| 欧美怡红院视频| 欧美日本精品在线| 午夜精品久久久久久久久久久| 91久久视频|