• <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>
            xiaoguozi's Blog
            Pay it forword - 我并不覺的自豪,我所嘗試的事情都失敗了······習慣原本生活的人不容易改變,就算現狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預料,人們需要更細心的觀察別人,要隨時注意才能保護別人,因為他們未必知道自己要什么·····

            //回憶系列..

              1//segment tree template
              2#include <iostream>
              3
              4using namespace std;
              5struct Tnode{
              6    //point left,right child
              7    Tnode *lc,*rc;
              8    //segment devide
              9    int left,right;
             10
             11    //extra
             12    int maxval;
             13
             14    //construct function
             15    Tnode(int data=0,int l=0,int r=0,Tnode*lp=0,Tnode*rp=0)
             16            :left(l),right(r),lc(lp),rc(rp){
             17                maxval=0;
             18    }
            ;
             19}
            ;
             20
             21//maxsize number of Tnode
             22const int N=200002;
             23int score[N];
             24
             25//static allocate memory for Tnode [a,b] node_size=2*(b-a)+1 for [i,i+1]
             26Tnode node[N<<1];
             27//count for usage Tnode array
             28int cnt=0;
             29
             30//make a new node ,return Tnode*
             31Tnode* new_node(){
             32    Tnode* p=&node[cnt++];
             33    memset(p,0,sizeof(Tnode));
             34    return p;
             35}

             36
             37//make tree ,return Tnode* which is root
             38//parament: [left,right]
             39Tnode* make_tree(int left,int right){
             40    //make a new Tnode 
             41    Tnode* root=new_node();
             42    //Initial the Tndoe
             43    root->left=left,root->right=right;
             44    
             45    if(left==right){//[i,i] 
             46        //root->data=score[left];//initial the Tnode data
             47        return root;
             48    }
            else{
             49        int mid=(left+right)>>1;
             50        root->lc=make_tree(left,mid);
             51        root->rc=make_tree(mid+1,right);
             52        return root;
             53    }

             54}

             55Tnode* UpdateData(Tnode* root,int left,int right,int val){
             56    if(root->left==root->right){
             57        root->maxval=val;
             58        return root;
             59    }

             60    int mid=(root->left+root->right)>>1;
             61    Tnode *rc=0,*lc=0;
             62    if(mid>=right){
             63        lc=UpdateData(root->lc,left,right,val);
             64    }
            else if(mid<left){
             65        rc=UpdateData(root->rc,left,right,val);
             66    }
            else{
             67        lc=UpdateData(root->lc,left,mid,val);
             68        rc=UpdateData(root->rc,mid+1,right,val);
             69    }

             70
             71    int leftmax=0,rightmax=0;
             72    if(lc!=0)leftmax=lc->maxval;
             73    if(rc!=0)rightmax=rc->maxval;
             74
             75    int curmax=leftmax>rightmax?leftmax:rightmax;
             76    root->maxval=curmax>root->maxval?curmax:root->maxval;
             77
             78    return root;
             79}

             80int QueryMax(Tnode* root,int left,int right){
             81    if(root->left>=left&&root->right<=right){
             82        return root->maxval;
             83    }

             84    int mid=(root->left+root->right)>>1;
             85    int l=0,r=0;
             86    if(mid<left){
             87        r=QueryMax(root->rc,left,right);
             88    }
            else if(mid>=right){
             89        l=QueryMax(root->lc,left,right);
             90    }
            else{
             91        l=QueryMax(root->lc,left,mid);
             92        r=QueryMax(root->rc,mid+1,right);
             93    }

             94    return l>r?l:r;
             95}

             96
             97
             98int main()
             99{
            100    int n,m;
            101    while(scanf("%d%d",&n,&m)!=EOF){
            102        cnt=0;
            103        Tnode *root=make_tree(1,n);
            104        for(int i=1;i<=n;i++){
            105            scanf("%d",&score[i]);
            106            UpdateData(root,i,i,score[i]);
            107        }

            108        char command;
            109        int a,b;
            110        getchar();
            111        for(int i=0;i<m;i++){
            112            scanf("%c %d %d",&command,&a,&b);
            113            switch(command){
            114                case 'Q':
            115                    printf("%d\n",QueryMax(root,a,b));
            116                    break;
            117                case 'U':
            118                    UpdateData(root,a,a,b);
            119                    break;
            120                default:
            121                    break;
            122            }
            ;
            123            getchar();
            124        }

            125    }

            126    return 0;
            127}
            posted on 2009-03-08 15:35 小果子 閱讀(372) 評論(0)  編輯 收藏 引用 所屬分類: Acm
            99久久777色| 99久久99久久精品国产片果冻| 国产亚洲欧美成人久久片| 国产精品久久婷婷六月丁香| 亚洲国产精品久久久久久| 久久99精品国产麻豆| 午夜人妻久久久久久久久| 久久天天躁夜夜躁狠狠躁2022| 久久久久亚洲AV无码专区网站| 91精品国产综合久久香蕉| 97久久超碰国产精品旧版| 国产成人久久精品区一区二区| 久久er99热精品一区二区| 久久精品九九亚洲精品| 国产综合久久久久久鬼色| 国产精品欧美久久久天天影视| 久久久无码精品亚洲日韩蜜臀浪潮 | 久久精品夜色噜噜亚洲A∨| 99久久99久久精品国产片| 狠狠综合久久综合中文88 | 久久久久亚洲AV综合波多野结衣| 久久国产热这里只有精品| 一本综合久久国产二区| 久久人人爽人人人人爽AV | 午夜精品久久久久9999高清| 亚洲人成无码www久久久| 亚洲中文字幕无码久久2020| 成人久久久观看免费毛片| 日本福利片国产午夜久久| 久久久久九国产精品| 午夜精品久久久久久影视777| 亚洲精品国产美女久久久| 久久久九九有精品国产| 久久久久99这里有精品10| 久久精品国产亚洲AV香蕉| 草草久久久无码国产专区| 伊人久久久AV老熟妇色| 亚洲国产二区三区久久| 亚洲综合熟女久久久30p| 99热精品久久只有精品| 无码人妻久久久一区二区三区|