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

posts - 100,  comments - 15,  trackbacks - 0
//離散化+線段樹(shù)

(以下轉(zhuǎn))感謝它幫助我理解離散化

假如不離散化,那線段樹(shù)的上界是10^7,假如建一個(gè)那么大的線段樹(shù)的話。。。必然MLE。于是要考慮離散化。
離散化的目的就是要將線段的長(zhǎng)度適當(dāng)?shù)目s小,但不破壞題意。
比如:
------   (1,6)
------------ (1,12 )
像這樣這樣的兩條線段,可以把它們看作:
-- (1,2)
--- ( 1,3 )
這樣,縮短了線段的長(zhǎng)度,但是他們的覆蓋關(guān)系并沒(méi)有改變。
關(guān)鍵我們要重新給壓縮后的線段標(biāo)記起點(diǎn)和終點(diǎn)。
按照通用的離散化方法。。。。
首先依次讀入線段端點(diǎn)坐標(biāo),存于post[MAXN][2]中,post[i][0]存第一條線段的起點(diǎn),post[i][1]存第一條線段的終點(diǎn),然后用一個(gè)結(jié)構(gòu)題數(shù)組line[MAXN]記錄信息,hash[i].v記錄端點(diǎn)坐標(biāo),hash[i].line記錄這個(gè)點(diǎn)屬于哪條線段(用正負(fù)數(shù)表示,負(fù)數(shù)表示起點(diǎn),正數(shù)表示終點(diǎn))。假如有N條線段,就有2*N個(gè)端點(diǎn)。然后將hash數(shù)組排序,按照端點(diǎn)的坐標(biāo),從小到大排。接著要把線段賦予新的端點(diǎn)坐標(biāo)了。從左到右按照遞增的次序,依次更新端點(diǎn),假如2*N個(gè)點(diǎn)中,共有M個(gè)不同坐標(biāo)的點(diǎn),那么線段樹(shù)的范圍就是[1,M]。
  1#include<iostream>
  2#include<stdlib.h>
  3#define MAXN 10000
  4#define MAX_UNSIGEN 65536
  5#define mixcolor -1
  6using namespace std;
  7struct seg
  8{
  9    int left,right;
 10    int color;
 11}
;
 12struct structx
 13{
 14    int v;       //端點(diǎn)值
 15    int line;    //屬于哪條線段,-起,+終
 16}
;
 17
 18seg Segtree[MAX_UNSIGEN+2];    //數(shù)
 19bool colortable[MAXN+1];
 20int post[MAXN][2];            //記錄輸入的poster位置,post[i][0]起點(diǎn),post[i][0]終點(diǎn)
 21structx hash[2*MAXN+1];        //所有端點(diǎn),對(duì)其排序,相當(dāng)于一個(gè)映射表
 22
 23void buildsegtree(int v,int l,int r)
 24{
 25    
 26    Segtree[v].left=l;
 27    Segtree[v].right=r;
 28    Segtree[v].color=0;
 29    if(l==r) return ; 
 30
 31    int mid=(l+r)>>1// div 2
 32    buildsegtree(v*2,l,mid);
 33    buildsegtree(v*2+1,mid+1,r);
 34}

 35
 36void insertseg(int v,int l,int r,int c)
 37{
 38        if(Segtree[v].left==&& Segtree[v].right==r)
 39        {
 40            Segtree[v].color=c;
 41            return ;
 42        }

 43        //only one color
 44        if(Segtree[v].color != mixcolor )  
 45        {
 46            Segtree[2*v].color=Segtree[v].color;
 47            Segtree[2*v+1].color=Segtree[v].color;
 48            Segtree[v].color=mixcolor;
 49        }

 50        
 51        int mid=(Segtree[v].left + Segtree[v].right) >> 1 ;
 52
 53        if(r<=mid) insertseg(2*v,l,r,c);
 54        else 
 55            if(mid<l) insertseg(2*v+1,l,r,c);
 56        else 
 57        {
 58            insertseg(2*v,l,mid,c);
 59            insertseg(2*v+1,mid+1,r,c);
 60        }

 61}

 62
 63void count(int v ,int l,int r)
 64{
 65    if(Segtree[v].color !=mixcolor ) 
 66    {
 67        colortable[Segtree[v].color]=true;
 68        return ;
 69    }
        
 70    int mid=(Segtree[v].left + Segtree[v].right) >> 1;
 71    if(r<=mid) count(2*v,l,r);
 72    else if(mid<l) count(2*v+1,l,r);
 73        else 
 74        {
 75            count(2*v,l,mid);
 76            count(2*v+1,mid+1,r);
 77        }

 78}

 79
 80int cmp(const void *a,const void *b)
 81{
 82    return ((structx*)a)->- ((structx*)b)->v;
 83}

 84
 85int main()
 86{
 87    int c,n,i,j,cnt,index;    
 88    scanf("%d",&c);
 89    while(c--)
 90    {
 91        scanf("%d",&n);
 92
 93        for(i=0,j=0,index=1;i<n;i++)
 94        {
 95            scanf("%d%d",&post[i][0],&post[i][1]);
 96            hash[j].v=post[i][0];hash[j++].line=-index;
 97            hash[j].v=post[i][1];hash[j++].line=index++;
 98        }

 99        //j==2*n
100        //離散化
101        qsort(hash,j,sizeof(hash[0]),cmp);    
102        post[-hash[0].line-1][0]=1;
103        for(i=1,index=1;i<j;i++)
104        {
105            if(hash[i].v!=hash[i-1].v) index++;
106
107            if(hash[i].line<0)
108                post[-hash[i].line-1][0]=index;
109            else post[hash[i].line-1][1]=index;
110
111        }

112                
113        buildsegtree(1,1,index);
114        for(i=0;i<n;i++)
115            insertseg(1,post[i][0],post[i][1],i+1);
116
117        count(1,1,index);
118        cnt=0;
119        for(i=1;i<=MAXN;i++)
120            if(colortable[i]==true
121            {
122                cnt++;
123                colortable[i]=false;
124            }

125            
126        printf("%d\n",cnt);
127
128    }

129    return 0;
130}

131
posted on 2009-04-17 19:16 wyiu 閱讀(279) 評(píng)論(0)  編輯 收藏 引用 所屬分類: POJ
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久久99国产精品免费| 久久婷婷麻豆| 亚洲免费影院| 欧美日韩不卡| 亚洲人成亚洲人成在线观看图片| 久久久久国产精品厨房| 亚洲欧洲在线一区| 免费在线日韩av| 国产亚洲网站| 欧美亚洲视频| 亚洲伊人伊色伊影伊综合网| 欧美网站在线| 亚洲免费视频一区二区| 9久re热视频在线精品| 欧美日韩1234| 亚洲最新在线| 一本色道久久88综合亚洲精品ⅰ| 久久尤物视频| 亚洲精品免费在线播放| 亚洲精品欧美日韩专区| 欧美日韩在线高清| 亚洲女优在线| 性久久久久久久| 激情综合电影网| 免费在线观看精品| 欧美成人精品1314www| 亚洲大胆av| 欧美国产日韩一区| 欧美精品三级在线观看| 午夜国产精品视频| 久久综合免费视频影院| 亚洲午夜一区二区| 亚洲高清不卡av| 一区二区日韩伦理片| 欧美gay视频激情| 蜜臀91精品一区二区三区| 亚洲精品美女在线| 一区二区三区国产精华| 国产精品免费电影| 免费在线成人| 欧美三区视频| 久久久久久久综合日本| 欧美成人嫩草网站| 性欧美大战久久久久久久久| 久久精品国产亚洲一区二区| 亚洲精品国产精品国自产在线| 日韩午夜一区| 国产亚洲视频在线观看| 亚洲精品在线三区| 国产亚洲精品久久飘花 | 午夜精品视频在线观看| 久久av二区| 一区二区三区久久网| 西西裸体人体做爰大胆久久久| 亚洲高清不卡在线| 亚洲一区二区三区免费在线观看| 在线观看欧美| 亚洲一区免费视频| 99国产精品久久| 欧美一级在线播放| 亚洲深夜激情| 男女激情视频一区| 久久精品一区二区三区不卡牛牛| 欧美激情视频给我| 美日韩精品视频免费看| 国产精品婷婷| 亚洲裸体俱乐部裸体舞表演av| 国产综合色精品一区二区三区| 亚洲精品小视频在线观看| 精品不卡在线| 亚洲一区二区动漫| 正在播放欧美一区| 欧美不卡视频一区发布| 久久午夜av| 国产欧美精品xxxx另类| 99re66热这里只有精品3直播| 亚洲欧洲一区| 久久久噜噜噜久久久| 欧美在线视频a| 国产精品久久999| 国产精品国产三级国产| 亚洲电影在线播放| 欧美连裤袜在线视频| aⅴ色国产欧美| 免费不卡中文字幕视频| 一区二区冒白浆视频| 亚洲电影免费观看高清完整版在线 | 久久久福利视频| 亚洲一区免费视频| 欧美日韩国产精品专区| 亚洲国产精品久久91精品| 91久久精品一区二区三区| 久久免费视频网| 卡通动漫国产精品| 极品裸体白嫩激情啪啪国产精品| 翔田千里一区二区| 久久久www| 激情婷婷久久| 久久精品五月| 麻豆视频一区二区| 日韩一区二区福利| 狠狠爱综合网| 欧美成人中文字幕| 亚洲国产小视频| 欧美交受高潮1| 99视频在线精品国自产拍免费观看| 99精品国产99久久久久久福利| 欧美日本高清| 亚洲一区免费观看| 久久嫩草精品久久久久| 樱桃视频在线观看一区| 欧美成人69| 一本色道久久综合亚洲二区三区 | 亚洲福利视频一区| 99视频一区二区三区| 欧美视频免费在线观看| 亚洲天堂男人| 久久婷婷综合激情| 亚洲精品一区二| 国产精品第三页| 亚洲欧美国产不卡| 美女任你摸久久| 99亚洲一区二区| 国产色视频一区| 久久久www免费人成黑人精品 | 亚洲一区二区少妇| 国产精品亚发布| 久久久久99| 日韩视频永久免费| 久久久亚洲综合| 中文久久精品| 黄色一区三区| 国产精品久久久一区麻豆最新章节| 久久看片网站| 欧美影院久久久| 老司机午夜免费精品视频| 欧美激情综合| 亚洲精品免费在线播放| 亚洲欧美日韩一区在线| 欧美成人精品1314www| 亚洲欧美日韩国产成人| 欧美日韩成人精品| 国产精品视频一区二区高潮| 亚洲美女尤物影院| 日韩一级免费| 国产伦精品一区二区三区免费| 久久米奇亚洲| 在线亚洲一区| 亚洲人成在线免费观看| 久久欧美中文字幕| 香蕉成人伊视频在线观看| 亚洲精品久久久久久久久久久久| 国产精品自拍视频| 欧美日韩视频在线第一区| 开元免费观看欧美电视剧网站| 午夜精品一区二区三区四区| 99精品国产在热久久| 亚洲电影欧美电影有声小说| 欧美伊人久久大香线蕉综合69| 亚洲欧洲一二三| 在线播放国产一区中文字幕剧情欧美| 欧美日韩中文字幕在线| 欧美精品www在线观看| 久久综合伊人77777| 久久久精品999| 欧美伦理a级免费电影| 亚洲三级电影全部在线观看高清| 久久大综合网| 亚洲欧美中文日韩在线| 中国日韩欧美久久久久久久久| 亚洲九九九在线观看| 91久久香蕉国产日韩欧美9色| 好看的日韩视频| 国产亚洲精品aa| 国产精品一区在线观看你懂的| 国产精品久久福利| 亚洲国产一区二区三区高清 | 影音先锋日韩资源| 国产主播一区二区| 国产一区二区日韩| 国产夜色精品一区二区av| 国产日韩一区欧美| 国产在线精品自拍| 国产综合色精品一区二区三区| 国产日韩欧美一区| 国产亚洲欧洲997久久综合| 国产一区二区久久| 一区国产精品| 亚洲第一免费播放区| 亚洲国内精品| 一区二区久久久久| 先锋资源久久| 欧美伊久线香蕉线新在线| 久久福利毛片| 免费观看成人鲁鲁鲁鲁鲁视频| 美女精品一区| 亚洲精品1区| 亚洲视频欧美视频| 久久国产夜色精品鲁鲁99| 免费日韩视频|