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

            ACM___________________________

            ______________白白の屋
            posts - 182, comments - 102, trackbacks - 0, articles - 0
            <2010年11月>
            31123456
            78910111213
            14151617181920
            21222324252627
            2829301234
            567891011

            常用鏈接

            留言簿(24)

            隨筆分類(332)

            隨筆檔案(182)

            FRIENDS

            搜索

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            MiYu原創, 轉帖請注明 : 轉載自 ______________白白の屋    

            代碼
            <pre lang="cpp" line="1">
            /*
            Mail to   : miyubai@gamil.com
            My Blog   : www.baiyun.me
            Link      : 
            http://www.cnblogs.com/MiYu  || http://m.shnenglu.com/MiYu
            Author By : MiYu
            Test      : 1
            Complier  : g++ mingw32-3.4.2
            Program   :
            Doc Name  :
            */
            //#pragma warning( disable:4789 )
            #include <iostream>
            #include 
            <fstream>
            #include 
            <sstream>
            #include 
            <algorithm>
            #include 
            <string>
            #include 
            <set>
            #include
            <map>
            #include 
            <utility>
            #include 
            <queue>
            #include 
            <stack>
            #include
            <list>
            #include 
            <vector>
            #include 
            <cstdio>
            #include 
            <cstdlib>
            #include 
            <cstring>
            #include 
            <cmath>
            #include 
            <ctime>
            using namespace std;
            inline 
            bool scan_d(int &num)  //整數輸入
            {
                    
            char in;bool IsN=false;
                    
            in=getchar();
                    
            if(in==EOF) return false;
                    
            while(in!='-'&&(in<'0'||in>'9')) in=getchar();
                    
            if(in=='-'){ IsN=true;num=0;}
                    
            else num=in-'0';
                    
            while(in=getchar(),in>='0'&&in<='9'){
                            num
            *=10,num+=in-'0';
                    }
                    
            if(IsN) num=-num;
                    
            return true;
            }
            struct seg_tree{
                   
            int l,r,val;
                   
            long long sum;
                   
            int mid () { return (r+l) >> 1; }
                   
            int dis () { return r-l+1; }
            }seg[
            600000];
            int v[100010];
            void creat ( int x, int y, int rt = 1 ) {
                 seg[rt].l 
            = x;
                 seg[rt].r 
            = y;
                 seg[rt].val 
            = 0;
                 
            if ( x == y ) {
                     
            return ;
                 }
                 
            int mid = seg[rt].mid();
                 creat ( x, mid, rt 
            << 1 );
                 creat ( mid 
            + 1, y, rt << 1 | 1 );
            }
            long long cr ( int x, int y, int rt = 1 ) {
                 seg[rt].val 
            = 0;
                 
            if ( seg[rt].l == seg[rt].r ) {
                     seg[rt].sum 
            = v[x];
                     
            return v[x];
                 }
                 
            int mid = seg[rt].mid();
                 
            return seg[rt].sum = cr ( x, mid, rt << 1 )
                                    
            + cr ( mid + 1, y, rt << 1 | 1 );
            }
            inline 
            void pushdown ( int rt ) {
                 
            int LL = rt << 1, RR = rt << 1 | 1, mid = seg[rt].mid();
                 
            if ( seg[rt].val ) {
                     seg[LL].sum 
            += (long long)seg[LL].dis() * seg[rt].val;
                     seg[RR].sum 
            += (long long)seg[RR].dis() * seg[rt].val;
                     seg[LL].val 
            += seg[rt].val;
                     seg[RR].val 
            += seg[rt].val;
                     seg[rt].val 
            = 0;
                 }
            }
            void md ( int x, int y, int val, int rt = 1 ) {
                 
            if ( seg[rt].l == x && seg[rt].r == y ) {
                     seg[rt].val 
            += val;
                     seg[rt].sum 
            += (long long)seg[rt].dis() * val;
                     
            return;
                 }
                 
            int LL = rt << 1, RR = rt << 1 | 1, mid = seg[rt].mid();
                 pushdown ( rt );
                 
            if ( x > mid ) md ( x, y, val, RR );
                 
            else if ( y <= mid ) md ( x, y, val, LL );
                 
            else {
                      md ( x, mid, val, LL );
                      md ( mid
            +1, y, val, RR );
                 }
                 seg[rt].sum 
            = seg[LL].sum + seg[RR].sum;
            }
            long long q ( int x, int y, int rt = 1 ) {
                
            if ( seg[rt].l == x && seg[rt].r == y ) {
                        
            return seg[rt].sum;
                }
                pushdown ( rt );
                
            int LL = rt << 1, RR = rt << 1 | 1, mid = seg[rt].mid();
                
            if ( x > mid ) return q ( x, y, RR );
                
            else if ( y <= mid ) return q ( x, y, LL );
                
            else {
                     
            return q ( x, mid, LL ) + q ( mid + 1, y, RR );
                }
            }
            int main ()
            {
                
            int N, M;
                creat ( 
            1100000 );
                
            while ( scanf ( "%d%d"&N, &M ) == 2 ) {
                      
            for ( int i = 1; i <= N; ++ i ) scanf ( "%d"&v[i] );
                      cr ( 
            1, N );
                      
            while ( M -- ) {
                            
            char s[5];
                            
            int x, y, val;
                            scanf ( 
            "%s", s );
                            
            switch ( s[0] ) {
                                   
            case 'Q':
                                        scanf ( 
            "%d%d"&x, &y );
                                        printf ( 
            "%lld\n", q ( x, y ) );
                                        
            break;
                                   
            case 'C':
                                        scanf ( 
            "%d%d%d"&x, &y, &val );
                                        md ( x, y, val );
                            }
                      }
                }
                
            return 0;
            }
            </pre>

             

            Feedback

            # re: HDU 3468 HDOJ 3468 A Simple Problem with Integers ACM 3468 IN HDU  回復  更多評論   

            2012-02-29 17:55 by 陳浩
            你好。。。我是學生 真心想學習 C++ 現在在A一些簡單的題目 可以 傳授點經驗嗎? 希望在A題目的過程中可以得到一些幫助 可以加我QQ535244373 嗎?
            久久久免费观成人影院| 久久99九九国产免费看小说| 久久久久久亚洲精品影院| 亚洲日本va午夜中文字幕久久| 久久一区二区三区免费| 久久久久亚洲av毛片大| 国内精品伊人久久久久妇| 久久综合香蕉国产蜜臀AV| 久久91精品久久91综合| 日韩亚洲国产综合久久久| 国产精品女同久久久久电影院| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 久久久久免费精品国产| 亚洲国产天堂久久综合网站| 亚洲午夜久久久影院| 久久久久久亚洲精品不卡| 国产亚洲欧美精品久久久| 国内精品久久久久久中文字幕| 国内精品人妻无码久久久影院 | 一级做a爰片久久毛片人呢| 色妞色综合久久夜夜| 国产精品亚洲综合专区片高清久久久| 青青草原综合久久大伊人| 欧美伊香蕉久久综合类网站| 99精品国产在热久久无毒不卡 | 久久久久免费精品国产| 97久久国产露脸精品国产| 久久久久亚洲AV综合波多野结衣 | 久久精品18| 中文字幕成人精品久久不卡| 久久水蜜桃亚洲av无码精品麻豆 | 囯产精品久久久久久久久蜜桃| 久久国产视频99电影| 久久99国产精品久久99| 麻豆AV一区二区三区久久| 久久精品国产亚洲av麻豆蜜芽 | 久久国语露脸国产精品电影| 性做久久久久久久久老女人| 久久精品视屏| 色狠狠久久综合网| 亚洲午夜久久久久久久久电影网|