• <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://www.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精品国产在热久久| 欧美久久亚洲精品| 久久AV高清无码| 中文精品99久久国产| 国产欧美一区二区久久| 精品国产婷婷久久久| 久久综合给合久久国产免费| 欧美色综合久久久久久| 91精品观看91久久久久久| 国产成人久久精品一区二区三区| 女人香蕉久久**毛片精品| 亚洲?V乱码久久精品蜜桃| 国产成人精品久久亚洲高清不卡 | 精品久久久久久国产潘金莲| 久久婷婷五月综合色高清 | 一本大道加勒比久久综合| 青草国产精品久久久久久| 囯产极品美女高潮无套久久久 | 久久午夜无码鲁丝片秋霞| 精品国产日韩久久亚洲| av色综合久久天堂av色综合在| 人妻少妇久久中文字幕一区二区| 午夜精品久久久久久久| 国产高潮国产高潮久久久91 | 亚洲AV成人无码久久精品老人| 久久天天躁夜夜躁狠狠躁2022 | 亚洲AV伊人久久青青草原| 国产一区二区久久久| 人人狠狠综合久久亚洲婷婷| 国产美女亚洲精品久久久综合| 99久久亚洲综合精品网站| 亚洲国产精品久久电影欧美| 天天久久狠狠色综合| 久久久久久精品久久久久| 国产精品99久久久久久猫咪| 国内精品久久久久伊人av| 久久天天躁狠狠躁夜夜2020一 | 九九精品99久久久香蕉| 久久SE精品一区二区|