• <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>
            心如止水
            Je n'ai pas le temps
            posts - 400,comments - 130,trackbacks - 0
            更新區間中的點,維護區間最大值。
            以下是我的代碼:
            #include<stdio.h>
            const long maxn=200007,maxm=5007;
            typedef 
            struct
            {
                
            long a,b,max;
                
            long left,right;
            }node;
            long n,m,tot,rp[maxn];
            node tree[maxn
            *7];
            long max(long a,long b)
            {
                
            return (a>b?a:b);
            }
            void build(long x,long y)
            {
                
            long now=++tot,mid=(x+y)>>1;
                tree[now].a
            =x;tree[now].b=y;
                
            if(x==y)
                  tree[now].max
            =rp[x];
                
            else if(x<y)
                {
                   tree[now].left
            =tot+1;build(x,mid);
                   tree[now].right
            =tot+1;build(mid+1,y);
                   tree[now].max
            =max(tree[tree[now].left].max,tree[tree[now].right].max);
                }
            }
            void insert(long id,long node)
            {
                
            long a=tree[node].a,b=tree[node].b,mid=(a+b)>>1;
                
            if(id==a&&id==b)
                  tree[node].max
            =max(tree[node].max,rp[id]);
                
            else
                {
                   
            if(id<=mid)
                     insert(id,tree[node].left);
                   
            else
                     insert(id,tree[node].right);
                   tree[node].max
            =max(tree[tree[node].left].max,tree[tree[node].right].max);
                }
            }
            long getmax(long x,long y,long node)
            {
                
            long a=tree[node].a,b=tree[node].b,mid=(a+b)>>1,re=-1;
                
            if(x<=a&&b<=y)
                  
            return tree[node].max;
                
            if(mid>=x)
                  re
            =max(re,getmax(x,y,tree[node].left));
                
            if(mid+1<=y)
                  re
            =max(re,getmax(x,y,tree[node].right));
                
            return re;
            }
            int main()
            {
                
            /*
                freopen("data.in","r",stdin);
                freopen("data.out","w",stdout);
                //
            */
                
            while(scanf("%ld%ld",&n,&m)==2)
                {
                   
            for(long i=1;i<=n;i++) scanf("%ld",&rp[i]);getchar();
                   tot
            =0;
                   build(
            1,n);
                   
            //  Build A Segment Tree
                   for(long i=1;i<=m;i++)
                   {
                      
            char cmd;
                      
            long a,b;
                      
            //for(long i=1;i<=tot;i++)printf("[%ld,%ld]'max is %ld\n",tree[i].a,tree[i].b,tree[i].max);
                      cmd=getchar();
                      scanf(
            "%ld%ld",&a,&b);getchar();
                      
            switch(cmd)
                      {
                         
            case 'Q':
                            
            if(a>b)
                            {
                               
            long t=a;a=b;b=t;
                            }
                            printf(
            "%ld\n",getmax(a,b,1));
                            
            break;
                         
            case 'U':
                            rp[a]
            =b;
                            insert(a,
            1);
                      }
                   }
                }
            return 0;
            }


            posted on 2010-02-18 15:57 lee1r 閱讀(486) 評論(0)  編輯 收藏 引用 所屬分類: 題目分類:數據結構
            亚洲国产成人久久精品99| 日韩人妻无码精品久久免费一 | 久久久久久久91精品免费观看| 成人妇女免费播放久久久| 伊人久久大香线蕉av不卡| 亚洲乱码日产精品a级毛片久久| 99精品伊人久久久大香线蕉| 国产一区二区精品久久| 狠狠狠色丁香婷婷综合久久俺| 久久久无码精品亚洲日韩按摩 | 免费国产99久久久香蕉| 97久久精品午夜一区二区| 久久人妻少妇嫩草AV无码专区| 久久精品国产亚洲AV忘忧草18| 中文字幕无码久久久| 精品国产日韩久久亚洲| 精品久久久久久无码不卡| 久久精品日日躁夜夜躁欧美| 无码八A片人妻少妇久久| 97久久婷婷五月综合色d啪蜜芽| 亚洲中文字幕无码久久精品1| 亚洲级αV无码毛片久久精品| 麻豆一区二区99久久久久| 国产亚洲综合久久系列| 久久久精品免费国产四虎| 狠狠色丁香婷婷综合久久来来去| 久久国产香蕉视频| 久久久久久久波多野结衣高潮| 亚洲第一极品精品无码久久| 精品精品国产自在久久高清| 国产精品一区二区久久精品无码| 亚洲日韩欧美一区久久久久我| 欧美日韩精品久久久久| 久久精品aⅴ无码中文字字幕不卡 久久精品aⅴ无码中文字字幕重口 | 久久久久国产一级毛片高清版| 狠狠人妻久久久久久综合| 香蕉aa三级久久毛片| 热re99久久精品国99热| 狠狠色综合网站久久久久久久| 精品久久久久久久国产潘金莲| 久久国产精品久久|