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

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>
            欧美一区二区三区婷婷月色| 国产欧美精品va在线观看| 亚洲国产日韩欧美| 亚洲一区二区三区免费观看| 夜夜夜精品看看| 欧美成人三级在线| 欧美激情免费观看| 亚洲二区视频在线| 久久久www成人免费精品| 欧美亚洲日本一区| 国产亚洲成av人在线观看导航| 亚洲自拍高清| 欧美一级夜夜爽| 国产亚洲精品成人av久久ww| 午夜一区在线| 久久综合九色99| 亚洲国产va精品久久久不卡综合| 久久精品视频免费| 亚洲第一网站| 亚洲精品美女在线观看播放| 欧美精品亚洲| 夜夜精品视频| 亚洲欧美日韩精品久久久| 国产精品日日摸夜夜摸av| 欧美一区深夜视频| 欧美大色视频| 亚洲视频在线视频| 国产日韩精品一区二区三区在线| 久久国产精品电影| 亚洲高清电影| 亚洲综合三区| 国产在线精品一区二区中文| 久久久久久久激情视频| 亚洲国产成人精品女人久久久| 在线视频一区观看| 国产日本欧美一区二区三区在线| 久久久久免费| 亚洲六月丁香色婷婷综合久久| 亚洲欧美日韩专区| 在线看片成人| 国产精品久线观看视频| 欧美在线视频全部完| 欧美v日韩v国产v| 亚洲一区国产一区| 国产一区二区三区网站| 欧美高清在线| 亚洲一区久久久| 毛片精品免费在线观看| aa国产精品| 国产精品永久入口久久久| 久久综合国产精品台湾中文娱乐网 | 亚洲高清视频在线观看| 亚洲永久免费av| 在线精品视频一区二区| 欧美体内she精视频| 久久精品国产综合精品| 日韩视频在线一区| 欧美v亚洲v综合ⅴ国产v| 先锋影音一区二区三区| 亚洲国产欧美在线人成| 国产麻豆精品theporn| 欧美韩日一区二区| 久久都是精品| 亚洲制服av| 亚洲欧洲久久| 欧美肥婆bbw| 久久精品一本| 一区二区三欧美| 在线日韩av永久免费观看| 国产精品视频福利| 欧美日韩第一区日日骚| 久久久久久久波多野高潮日日| 99精品视频免费全部在线| 激情视频一区二区| 国产精品私房写真福利视频| 欧美日韩精品久久| 久久中文字幕导航| 久久久久久亚洲精品中文字幕| 一本久道久久综合婷婷鲸鱼| 亚洲第一黄色网| 久久亚洲春色中文字幕| 欧美一区二区在线免费观看| 亚洲一二三级电影| 一本久道久久综合狠狠爱| 亚洲国产精品久久久| 好吊视频一区二区三区四区| 国产区精品在线观看| 国产精品一区二区黑丝| 欧美午夜三级| 国产精品国产自产拍高清av| 欧美日韩免费区域视频在线观看| 欧美电影电视剧在线观看| 久久天天躁狠狠躁夜夜av| 欧美中文字幕视频| 欧美影院精品一区| 欧美一区二区三区免费视| 免播放器亚洲| 久久久久久香蕉网| 久久精品国产亚洲精品| 欧美在线播放| 久久精品国产清高在天天线| 久久av在线| 久久精品理论片| 久久精品国产精品亚洲精品| 久久久人成影片一区二区三区观看| 久久岛国电影| 欧美在线观看一区| 久久精品在线免费观看| 久久资源在线| 欧美激情导航| 亚洲精品乱码久久久久| 一区二区三区色| 久久久久久久精| 老司机成人网| 亚洲国产第一| 夜久久久久久| 午夜精品久久久久久久久久久| 午夜欧美不卡精品aaaaa| 羞羞答答国产精品www一本| 久久高清福利视频| 免费黄网站欧美| 欧美日本国产精品| 国产精品一级久久久| 精品999网站| 亚洲精品一区二区三区婷婷月| 一本色道久久88综合亚洲精品ⅰ| 亚洲永久免费观看| 久久女同精品一区二区| 亚洲黄色影院| 亚洲欧美清纯在线制服| 久久婷婷丁香| 国产精品成人一区二区网站软件 | 国产日韩欧美高清| 亚洲国产欧美不卡在线观看| 一个色综合av| 久久人人看视频| 亚洲人精品午夜| 午夜精品久久久久久| 欧美大香线蕉线伊人久久国产精品| 欧美先锋影音| 欧美日本国产精品| 国产噜噜噜噜噜久久久久久久久| 黄页网站一区| 亚洲一区日韩| 男同欧美伦乱| 亚洲一区免费| 欧美成人精品一区二区| 国产精品视频一| 日韩天堂在线观看| 久久人人97超碰国产公开结果 | 久久精品综合一区| 91久久久久久久久| 久久久国产精品亚洲一区| 欧美日韩免费观看一区=区三区 | 欧美激情综合| 韩国一区二区三区在线观看| 9i看片成人免费高清| 麻豆精品一区二区av白丝在线| 一区二区三区久久网| 欧美国产视频日韩| 韩国三级电影久久久久久| 亚洲欧美日本日韩| 亚洲欧洲在线一区| 久久亚洲影音av资源网| 国产日产欧美精品| 亚洲一级一区| 91久久夜色精品国产九色| 久久精彩免费视频| 国产乱码精品一区二区三区五月婷 | 99热免费精品在线观看| 噜噜噜在线观看免费视频日韩 | 久热这里只精品99re8久| 国产精品久久久久aaaa| 亚洲日本欧美| 玖玖综合伊人| 亚洲欧美一级二级三级| 欧美人妖另类| 亚洲第一在线视频| 久久午夜电影| 香蕉成人伊视频在线观看| 欧美日韩视频在线一区二区 | 欧美大尺度在线| 久久国产精品久久久久久电车| 欧美视频中文一区二区三区在线观看| 亚洲激情视频在线观看| 久久麻豆一区二区| 久久国产主播| 激情久久中文字幕| 久久久水蜜桃av免费网站| 欧美一区日本一区韩国一区| 国产欧美一区二区精品性色| 性色av一区二区怡红| 亚洲无限av看| 国产欧美婷婷中文| 久久国产精品电影| 欧美一区二区三区视频在线 | 99精品国产福利在线观看免费| 欧美黄色成人网| 欧美1区2区视频| 亚洲精选一区|