• <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>

            pku 3468 區(qū)間求和+統(tǒng)計,線段樹

            題意很明確,一個區(qū)間,給定2種操作
            1、給[s,e]加上一個數(shù)
            2、詢問[s,e]的和
            線段樹寫的有點搓,其實沒必要搞那么復(fù)雜,還是采取標記下移就可以了。。郁悶
             1 import java.io.*;
             2 public class Main {
             3 
             4     /**
             5      * @param args
             6      */
             7     static class node
             8     {
             9         int s,e;
            10         long add=0;
            11         long sum=0;
            12     }
            13     static node st[]=new node[400000];
            14     static void init(int s,int e,int pos)
            15     {
            16         st[pos].s=s;
            17         st[pos].e=e;
            18         if(e!=s+1)
            19         {
            20             init(s,(s+e)>>1,pos<<1);
            21             init((s+e)>>1,e,(pos<<1)+1);
            22         }
            23     }
            24     static void add(int s,int e,long add,int pos)
            25     {
            26         if(st[pos].s==s&&st[pos].e==e)
            27         {
            28             st[pos].add+=add;
            29             st[pos].sum+=add*(e-s);
            30         }
            31         else
            32         {
            33             int mid=(st[pos].s+st[pos].e)>>1;
            34             if(e<=mid)
            35                 add(s,e,add,pos<<1);
            36             else if(s>=mid)
            37                 add(s,e,add,(pos<<1)+1);
            38             else
            39             {
            40                 add(s,mid,add,pos<<1);
            41                 add(mid,e,add,(pos<<1)+1);
            42             }
            43             st[pos].sum=st[pos<<1].sum+st[(pos<<1)+1].sum+st[pos].add*(st[pos].e-st[pos].s);
            44         }
            45     }
            46     static long getsum(int s,int e,int pos)
            47     {
            48         if(st[pos].s==s&&st[pos].e==e)
            49             return st[pos].sum;
            50         else
            51         {
            52             int mid=(st[pos].s+st[pos].e)>>1;
            53             if(e<=mid)
            54                 return getsum(s,e,pos<<1)+st[pos].add*(e-s);
            55             else if(s>=mid)
            56                 return getsum(s,e,(pos<<1)+1)+st[pos].add*(e-s);
            57             else
            58                 return getsum(s,mid,pos<<1)+getsum(mid,e,(pos<<1)+1)+st[pos].add*(e-s);
            59         }
            60     }
            61     public static void main(String[] args) throws Exception{
            62         StreamTokenizer in=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
            63         for(int i=0;i<400000;i++)
            64             st[i]=new node();
            65         int n,q;
            66         in.nextToken();
            67         n=(int)in.nval;
            68         in.nextToken();
            69         q=(int)in.nval;
            70         init(1,n+1,1);
            71         for(int i=1;i<=n;i++)
            72         {
            73             in.nextToken();
            74             add(i,i+1,(long)in.nval,1);
            75         }
            76         for(int i=1;i<=q;i++)
            77         {
            78             in.nextToken();
            79             String jud=in.sval;
            80             in.nextToken();
            81             int a=(int)in.nval;
            82             in.nextToken();
            83             int b=(int)in.nval;
            84             switch(jud.charAt(0))
            85             {
            86             case 'Q':
            87                 System.out.println(getsum(Math.min(a, b),Math.max(a, b)+1,1));
            88                 break;
            89             case 'C':
            90                 in.nextToken();
            91                 add(Math.min(a, b),Math.max(a,b)+1,(long)in.nval,1);
            92                 break;
            93             }
            94         }
            95             
            96     }
            97 
            98 }
            99 


            posted on 2010-10-28 01:34 yzhw 閱讀(209) 評論(0)  編輯 收藏 引用 所屬分類: data struct

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導(dǎo)航

            統(tǒng)計

            公告

            統(tǒng)計系統(tǒng)

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            思思久久99热只有频精品66| 久久99国产精一区二区三区| 欧美国产成人久久精品| 午夜久久久久久禁播电影| 久久99热狠狠色精品一区| 亚洲第一永久AV网站久久精品男人的天堂AV | 日本久久久久久中文字幕| 久久午夜无码鲁丝片午夜精品| 久久亚洲国产精品成人AV秋霞| 久久久久亚洲AV片无码下载蜜桃| 国产精品欧美久久久久天天影视| 久久久久国产精品嫩草影院| 国产精品九九久久精品女同亚洲欧美日韩综合区 | segui久久国产精品| 伊人色综合久久天天人手人婷| 久久国产乱子伦精品免费午夜| 久久久久亚洲av无码专区| 中文成人久久久久影院免费观看| 2021久久国自产拍精品| 亚洲国产精品久久久天堂| 久久久久久av无码免费看大片| 久久久一本精品99久久精品88| 老男人久久青草av高清| 人妻少妇精品久久| 久久精品亚洲精品国产欧美| 国产精品gz久久久| 一本一道久久精品综合| 精品综合久久久久久97超人| .精品久久久麻豆国产精品| 国产精品一区二区久久不卡| 久久久久亚洲av无码专区喷水| 伊人久久综合无码成人网| 亚洲中文精品久久久久久不卡| 久久久一本精品99久久精品88| 精品久久久久久久国产潘金莲| 久久综合伊人77777| 一级a性色生活片久久无少妇一级婬片免费放| 久久精品国产72国产精福利| 久久久久人妻一区精品| 色欲综合久久躁天天躁| 久久久久高潮综合影院|