• <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年9月>
            2930311234
            567891011
            12131415161718
            19202122232425
            262728293012
            3456789

            常用鏈接

            留言簿(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 嗎?
            久久精品水蜜桃av综合天堂| 久久亚洲中文字幕精品一区| 偷偷做久久久久网站| 国内精品伊人久久久影院| 影音先锋女人AV鲁色资源网久久 | 97精品久久天干天天天按摩| 久久青青草原国产精品免费| 久久国产精品免费| 久久中文字幕人妻熟av女| 欧美大香线蕉线伊人久久| 国产午夜免费高清久久影院| 久久www免费人成看国产片| 无码人妻久久久一区二区三区| 青青草国产精品久久| 精品熟女少妇AV免费久久| 9久久9久久精品| 一本久久知道综合久久| 欧美色综合久久久久久| 久久久久久亚洲精品成人| 青青青青久久精品国产h久久精品五福影院1421 | 欧美噜噜久久久XXX| 久久久久亚洲AV成人网人人软件 | 久久久久久久久久免免费精品| 麻豆成人久久精品二区三区免费 | 久久综合一区二区无码| 老司机国内精品久久久久| 亚洲AV日韩AV永久无码久久| 久久影院午夜理论片无码| 国产成人精品久久免费动漫| 婷婷久久香蕉五月综合加勒比| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 少妇高潮惨叫久久久久久 | 日韩乱码人妻无码中文字幕久久| 伊人 久久 精品| 国产精品女同一区二区久久| 香港aa三级久久三级| 久久99久久99小草精品免视看| 无码AV波多野结衣久久| 99久久夜色精品国产网站| 无码久久精品国产亚洲Av影片| 亚洲精品美女久久777777|