• <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
            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            常用鏈接

            留言簿(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国产精品亚洲 | 久久久久久青草大香综合精品| 久久午夜电影网| 久久精品国产第一区二区三区| 99国产欧美精品久久久蜜芽| 久久精品国产精品亚洲人人| 国产综合精品久久亚洲| 精品无码久久久久久国产| 免费精品久久天干天干| 漂亮人妻被黑人久久精品| 久久精品视频网| 久久亚洲日韩看片无码| 久久九九亚洲精品| 午夜人妻久久久久久久久| 2021国内久久精品| www.久久热| 热re99久久6国产精品免费| 精品久久人人妻人人做精品| 久久天天躁狠狠躁夜夜网站| 久久久久久久亚洲精品| 久久国产精品成人免费| 亚洲AV无码久久精品蜜桃| 久久国产视频网| 国产精品成人99久久久久| 久久久久人妻一区精品性色av| 久久久久无码中| 精品久久国产一区二区三区香蕉| 韩国免费A级毛片久久| 久久精品国产99国产精品导航| 久久国产高清一区二区三区| 久久美女人爽女人爽| 国产精品久久波多野结衣| 久久精品无码一区二区无码| 亚洲欧美成人综合久久久 | 欧美与黑人午夜性猛交久久久| 精品久久久久久久久中文字幕| 99久久精品午夜一区二区| 久久精品亚洲精品国产色婷| 91精品国产9l久久久久| 国产精品99久久99久久久| 久久99国产精品久久99|