青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

The Fourth Dimension Space

枯葉北風寒,忽然年以殘,念往昔,語默心酸。二十光陰無一物,韶光賤,寐難安; 不畏形影單,道途阻且慢,哪曲折,如渡飛湍。斬浪劈波酬壯志,同把酒,共言歡! -如夢令

HDOJ 2871 Memory Control 經典線段樹懶操作

這題有點像Hotel的包裝版,非常經典,讓我進一步熟悉了線段樹的區間操作(主要是延遲標記的使用)。
唯一的問題出在自己寫的二分函數上,死活都是TLE,后來參考了小HH的二分才過掉,不知道自己哪寫掛了,郁悶。。。。
PS:順便問一下,高質量的內存管理難道真的是用線段樹實現的?
#include<iostream>
#include
<algorithm>
#include
<vector>
using namespace std;

int const maxn=50010;
int n,m;
#define LL(i) (i<<1)
#define RR(i) ((i<<1)|1)
struct node
{
    
int l,r;
    
int cval,lval,rval;
    
int st;
    
int len(){return r-l+1;}
    
void doit()
    
{
        
if(st==1)cval=lval=rval=0;
        
else cval=lval=rval=len();
    }

}
ST[maxn*8];

struct block
{
    
int s,t;
}
;
vector
<block>B;
/*
int Bfind(int x)//返回-1代表沒找到
{
    int l=0;
    int r=B.size()-1;
    while(l<=r)
    {

        int mid=(l+r)>>1;
        if(x>=B[mid].s&&x<=B[mid].t)return mid;
        if(x<B[mid].s)r=mid-1;
        else if(x>B[mid].t)l=mid+1;
    }
    return -1;
}


int Infind(int x)//找到插入位置
{
    int l=0;
    int r=B.size()-1;
    int len=B.size();

    while(l<=r)
    {    
        if(x>B[len-1].t)
            return B.size();
        if(x<B[0].s)
            return 0;
        
        int mid=(l+r)>>1;
        if(x>B[mid].t&&x<B[mid+1].s)return mid+1;
        if(x<B[mid].s) r=mid-1;
        else if(x>B[mid].t)l=mid+1;
        
    }
       
}
*/


int Bin(int x) {
    
int lo = 0;
    
int hi =B.size()- 1;
    
while(lo <= hi) {
        
int mid = (lo + hi) >> 1;
        
if(B[mid].s<= x) {
            lo 
= mid + 1;
        }
 else {
            hi 
= mid - 1;
        }

    }

    
return lo;
}

//st為0時代表沒覆蓋
void Build(int l,int r,int i)
{
    ST[i].st
=0;
    ST[i].l
=l;
    ST[i].r
=r;
    
if(l==r){ST[i].cval=ST[i].lval=ST[i].rval=1;return;}
    
int mid=(ST[i].l+ST[i].r)>>1;
    Build(l,mid,LL(i));
    Build(mid
+1,r,RR(i));
    ST[i].cval
=ST[i].lval=ST[i].rval=ST[i].len();
    
}



void update(int l,int r,int op,int i)
{
    
if(l==ST[i].l&&r==ST[i].r)
    
{
        ST[i].st
=op;
        ST[i].doit();
        
return;
    }

    
if(ST[i].st!=-1)
    
{
        ST[LL(i)].st
=ST[RR(i)].st=ST[i].st;
        ST[LL(i)].doit();
        ST[RR(i)].doit();
        ST[i].st
=-1;
    }

    
int mid=(ST[i].l+ST[i].r)>>1;
    
if(r<=mid)update(l,r,op,LL(i));
    
else if(l>mid)update(l,r,op,RR(i));
    
else{
        update(l,mid,op,LL(i));
        update(mid
+1,r,op,RR(i));
    }

    ST[i].cval
=max(ST[LL(i)].cval,ST[RR(i)].cval);
    ST[i].cval
=max(ST[i].cval,ST[LL(i)].rval+ST[RR(i)].lval);
    
//
    ST[i].lval=ST[LL(i)].lval;
    ST[i].rval
=ST[RR(i)].rval;
    
//
    if(ST[LL(i)].lval==ST[LL(i)].len())
        ST[i].lval
+=ST[RR(i)].lval;
    
if(ST[RR(i)].rval==ST[RR(i)].len())
        ST[i].rval
+=ST[LL(i)].rval;
}



int Query(int w,int i)
{
    
if(ST[i].lval>=w)return ST[i].l;
    
if(ST[i].st!=-1)
    
{
        ST[LL(i)].st
=ST[RR(i)].st=ST[i].st;
        ST[LL(i)].doit();
        ST[RR(i)].doit();
        ST[i].st
=-1;
    }

    
else if(ST[LL(i)].cval>=w)return Query(w,LL(i));
    
else if(ST[LL(i)].rval+ST[RR(i)].lval>=w) return ST[LL(i)].r-ST[LL(i)].rval+1;
    
else if(ST[RR(i)].cval>=w)return Query(w,RR(i));
    
//else if(ST[RR(i)].rval>=w)return ST[RR(i)].r-ST[RR(i)].rval+1; 
    else return 0;
}


int main()
{
    
while(scanf("%d%d",&n,&m)!=EOF)
    
{

        Build(
1,n,1);
        B.clear();
        
for(int i=0;i<m;i++)
        
{
            
char op[9];
            scanf(
"%s",op);
            
if(op[0]=='N')
            
{
            
                
int w;
                scanf(
"%d",&w);
                
if(ST[1].cval<w)
                    puts(
"Reject New");
                
else
                
{
                
                    
//
                    int s=Query(w,1);
                    update(s,s
+w-1,1,1);
                    printf(
"New at %d\n",s);
                    
//
                    block tem;
                    tem.s
=s;
                    tem.t
=s+w-1;
                    
int pos=Bin(s);
                    B.insert(B.begin()
+pos,tem);
                }

            }

            
else if(op[0]=='R')
            
{
                update(
1,n,0,1);
                puts(
"Reset Now");
                B.clear();
            }

            
else if(op[0]=='G')
            
{
                
int x;
                scanf(
"%d",&x);
                
if(x>B.size())
                    puts(
"Reject Get");
                
else
                
{
                    printf(
"Get at %d\n",B[x-1].s);
                }


            }

            
else
            
{
                
int x;

                scanf(
"%d",&x);
                
int t=Bin(x)-1;
                
if(t==-1||B[t].t<x)
                    puts(
"Reject Free");
                
else
                
{
                    printf(
"Free from %d to %d\n",B[t].s,B[t].t);
                    update(B[t].s,B[t].t,
0,1);
                    B.erase(B.begin()
+t,B.begin()+t+1);
                }

            }

        }

        puts(
"");

    }



    
return 0;
}

posted on 2010-10-30 20:00 abilitytao 閱讀(1687) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久激情视频| 国产日韩欧美| 亚洲女女女同性video| 亚洲日本视频| 欧美国产一区视频在线观看| 久久综合五月天婷婷伊人| 巨乳诱惑日韩免费av| 欧美mv日韩mv国产网站app| 亚洲电影在线观看| 欧美大片一区二区| 欧美激情精品久久久| 欧美激情一二区| 一本大道久久a久久精二百| 亚洲一区在线免费| 久久九九久久九九| 欧美日本韩国一区| 欧美午夜性色大片在线观看| 国外成人在线视频| 99这里只有久久精品视频| 亚洲女人天堂成人av在线| 久久精品视频免费| 亚洲区一区二| 欧美在线国产| 欧美日韩国产成人| 国产丝袜美腿一区二区三区| 亚洲精品久久嫩草网站秘色| 久久国产精品一区二区| 亚洲精品一二区| 欧美在线观看日本一区| 欧美日韩视频免费播放| 在线观看不卡av| 亚洲无线一线二线三线区别av| 久久婷婷影院| 午夜国产不卡在线观看视频| 欧美精品色网| 91久久精品美女高潮| 久久久久久久网| 亚洲小视频在线| 嫩草伊人久久精品少妇av杨幂| 国产毛片精品国产一区二区三区| 亚洲精品在线观看视频| 鲁大师成人一区二区三区| 亚洲男人的天堂在线| 欧美日韩一区二区三区四区在线观看| 狠狠色伊人亚洲综合成人| 小黄鸭精品密入口导航| 欧美色另类天堂2015| 国内精品模特av私拍在线观看| 亚洲天天影视| 亚洲精品在线视频| 美女黄色成人网| 影音先锋国产精品| 久久免费高清| 久久久久国产一区二区三区四区| 99国产精品视频免费观看一公开 | 一个人看的www久久| 久久久人成影片一区二区三区 | 欧美大片91| 最新中文字幕一区二区三区| 玖玖国产精品视频| 久久国产视频网站| 国模 一区 二区 三区| 久久精彩视频| 国内精品久久久久久久影视蜜臀 | 欧美一区二区三区婷婷月色| 亚洲精品一区二区网址| 欧美激情一区二区三区| 一个人看的www久久| 夜夜嗨av一区二区三区免费区| 欧美日韩亚洲一区二区三区| 在线亚洲一区观看| 日韩一区二区高清| 欧美午夜剧场| 久久精品99国产精品| 久久精品国产视频| 亚洲狠狠婷婷| 亚洲国产成人精品视频| 欧美精品一区三区在线观看| 在线视频欧美精品| 亚洲影音一区| 黄色一区二区在线观看| 亚洲第一主播视频| 欧美性视频网站| 久久久久一区二区三区| 另类国产ts人妖高潮视频| 亚洲国产专区| 亚洲深夜福利在线| 狠狠色狠狠色综合日日小说| 亚洲国产成人久久综合| 国产精品v欧美精品v日本精品动漫 | 国产精品99久久不卡二区| 国产精品视频免费在线观看| 久久国产主播精品| 蜜桃久久精品一区二区| 一区二区三区欧美视频| 亚洲欧美精品在线| 亚洲欧洲另类国产综合| 在线一区视频| 尤物yw午夜国产精品视频明星| 亚洲国产日韩在线一区模特| 国产精品毛片va一区二区三区| 久久成人久久爱| 欧美国产成人精品| 欧美在线高清视频| 欧美—级高清免费播放| 欧美一区二区精品在线| 欧美日韩免费观看一区=区三区| 亚洲色图制服丝袜| 精品999成人| 一区二区三区四区精品| 伊人成人在线| 亚洲自拍高清| 99精品免费视频| 欧美一区二区三区婷婷月色| 亚洲无限av看| 男人的天堂亚洲| 欧美在线免费播放| 欧美日韩国产高清| 麻豆亚洲精品| 国产精品嫩草久久久久| 亚洲国产精品久久人人爱蜜臀| 国产色视频一区| 一区二区三区四区国产| 中日韩美女免费视频网址在线观看 | 亚洲人久久久| 在线精品在线| 欧美中文字幕不卡| 亚洲欧美日韩精品久久亚洲区| 蜜臀99久久精品久久久久久软件| 久久国产视频网| 国产精品黄页免费高清在线观看| 亚洲国产精品一区二区三区| 精品动漫av| 欧美在线影院| 亚洲专区一区二区三区| 国产精品大片wwwwww| 亚洲国产三级网| 亚洲欧洲在线播放| 另类人畜视频在线| 欧美成人精品在线| 国内自拍一区| 久久久精品日韩欧美| 亚洲国产精品成人精品| 久久久久久精| 欧美ed2k| 亚洲国产精品久久| 久久综合一区二区| 欧美激情a∨在线视频播放| 亚洲国产黄色| 欧美高清视频www夜色资源网| 欧美激情视频在线免费观看 欧美视频免费一| 韩国三级电影一区二区| 久久久久国产精品一区三寸| 久久婷婷丁香| 亚洲春色另类小说| 你懂的一区二区| 亚洲日本欧美在线| 亚洲欧美日韩国产一区二区| 国产精品麻豆va在线播放| 午夜精品一区二区三区在线播放| 久久久久久亚洲精品中文字幕 | 亚洲国产成人在线视频| 欧美国产第一页| 99精品国产在热久久婷婷| 亚洲欧美日韩区| 国产精品尤物福利片在线观看| 久久天天躁狠狠躁夜夜av| 亚洲福利视频二区| 久久精品视频99| 欧美国产日韩免费| 99国产精品视频免费观看| 欧美色视频一区| 亚洲尤物在线| 美女精品在线观看| 一区二区三区四区五区视频| 国产欧美日韩一区二区三区在线观看| 欧美在线中文字幕| 亚洲精品综合精品自拍| 欧美一级在线视频| 悠悠资源网久久精品| 欧美日韩在线不卡| 欧美一区二区三区免费在线看 | 亚洲精选在线| 久久久xxx| 夜夜爽www精品| 激情偷拍久久| 欧美性大战久久久久| 久久久精彩视频| 一区二区三区欧美在线观看| 老鸭窝91久久精品色噜噜导演| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | aa国产精品| 国内揄拍国内精品久久| 国产精品女人网站| 欧美精品激情在线观看| 久久精品国产一区二区三区| 在线视频日韩| 亚洲国产日韩一区二区| 久久一区二区三区av| 午夜久久久久久久久久一区二区|