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

糯米

TI DaVinci, gstreamer, ffmpeg
隨筆 - 167, 文章 - 0, 評論 - 47, 引用 - 0
數(shù)據(jù)加載中……

POJ 3121 The SetStack Computer 哈希

可以開一個(gè)閉hash表。棧里面存放的只是hash表的下標(biāo)。這樣比較兩個(gè)set是否一樣,就只需要比較他們的下標(biāo)是否一樣。
同時(shí)對每個(gè)set,要保存它的孩子,一樣存放的是hash表的下標(biāo)。

union和intersect操作,如果是按序存放孩子的話,復(fù)雜度可以低至O(N)。
空間復(fù)雜度為O(N^2)。

#include <stdio.h>
#include 
<string.h>
#include 
<algorithm>
#include 
<cmath>

using namespace std;

#define SIZE 4096
struct slot {
    
int *arr;
    
int cnt;
    
int hash;
}
 table[SIZE];
int stack[SIZE], *sp;
int _pool[SIZE*1024], *pool;

int gethash(int *arr, int cnt)
{
    unsigned 
int h = 0x1653;
    
while (cnt--
        h 
= (h*31 + *arr++& 0x7fffffff;
    
return h;
}


int insert(int *arr, int cnt)
{
    
int h = gethash(arr, cnt);
    
int i = h%SIZE;
    
while (table[i].hash && table[i].hash != h)
        i 
= (i+1)%SIZE;
    
if (!table[i].hash) {
        memcpy(pool, arr, cnt
*sizeof(int));
        table[i].hash 
= h;
        table[i].arr 
= pool;
        table[i].cnt 
= cnt;
        pool 
+= cnt;
    }

    
return i;
}


void set_union(int *a, int ca, int *b, int cb, int *arr, int *cnt)
{
    
int i, j;

    memcpy(arr, a, ca
*sizeof(int));
    memcpy(arr 
+ ca, b, cb*sizeof(int));
    sort(arr, arr 
+ ca + cb);
    
for (i = j = 0; i < ca + cb; i++{
        
if (i && arr[i] == arr[i-1])
            
continue;
        arr[j
++= arr[i];
    }

    
*cnt = j;
}


int do_union(int a, int b)
{
    
int arr[SIZE], cnt;

    set_union(
            table[a].arr, table[a].cnt, 
            table[b].arr, table[b].cnt, 
            arr, 
&cnt
            );
    
return insert(arr, cnt);
}


int do_intersect(int a, int b)
{
    
int arr[SIZE], cnt, i, j;

    cnt 
= 0;
    
for (i = 0; i < table[a].cnt; i++{
        
for (j = 0; j < table[b].cnt; j++)
            
if (table[b].arr[j] == table[a].arr[i]) {
                arr[cnt
++= table[a].arr[i];
                
break;
            }

    }

    
return insert(arr, cnt);
}


int do_add(int a, int b)
{
    
int arr[SIZE], cnt;

    set_union(table[b].arr, table[b].cnt, 
&a, 1, arr, &cnt);
    
return insert(arr, cnt);
}


int main()
{
    
char op[128];
    
int t, i, n;

    scanf(
"%d"&t);
    
while (t--{
        pool 
= _pool;
        sp 
= stack-1;
        
for (i = 0; i < SIZE; i++)
            table[i].hash 
= 0;
        scanf(
"%d"&n);
        
while (n--{
            scanf(
"%s", op);
            
if (!strcmp(op, "PUSH")) {
                
*++sp = insert(NULL, 0);
            }
 else if (!strcmp(op, "DUP")) {
                sp[
1= *sp;
                sp
++;
            }
 else if (!strcmp(op, "UNION")) {
                sp[
-1= do_union(sp[0], sp[-1]);
                sp
--;
            }
 else if (!strcmp(op, "INTERSECT")) {
                sp[
-1= do_intersect(sp[0], sp[-1]);
                sp
--;
            }
 else if (!strcmp(op, "ADD")) {
                sp[
-1= do_add(sp[0], sp[-1]);
                sp
--;
            }

            printf(
"%d\n", table[*sp].cnt);
        }

        printf(
"***\n");
    }


    
return 0;
}

posted on 2011-02-23 14:41 糯米 閱讀(742) 評論(1)  編輯 收藏 引用 所屬分類: POJ

評論

# re: POJ 3121 The SetStack Computer 哈希  回復(fù)  更多評論   

請問這個(gè)題 你還記得怎么對 集合 做的hash 嗎?? 搞不懂。。
2013-03-20 22:12 | OceanLight
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲一区二区三区四区中文| 亚洲毛片网站| 欧美一区二区三区成人| 欧美高清在线观看| 亚洲午夜国产成人av电影男同| 欧美激情第8页| 欧美高清视频| 亚洲人妖在线| 亚洲福利视频二区| 久久久久国产精品午夜一区| 一区二区久久久久| 欧美一区2区视频在线观看| 亚洲一区二区在线观看视频| 精品999久久久| 91久久精品国产91性色tv| 亚洲精品欧美日韩专区| 日韩一级视频免费观看在线| 亚洲国产成人久久| 亚洲精品乱码久久久久久日本蜜臀| 免费欧美视频| 99re66热这里只有精品4| 亚洲欧美日韩综合aⅴ视频| 免费在线播放第一区高清av| 国产精品综合久久久| 日韩亚洲精品视频| 久久视频免费观看| 久久亚洲电影| 亚洲激情第一页| 亚洲图中文字幕| 亚洲大胆美女视频| 欧美激情一区二区三区蜜桃视频| 欧美日韩国产限制| 精品9999| 免费成人性网站| 久久久精品一品道一区| 国产日韩一区二区三区在线播放| 香蕉久久夜色精品| 亚洲午夜久久久| 国产欧美日韩| 猛男gaygay欧美视频| 欧美一区二区女人| 国产精品乱码人人做人人爱| 午夜在线播放视频欧美| 正在播放亚洲一区| 国产无一区二区| 午夜视频一区在线观看| 亚洲片在线观看| 欧美精品aa| 亚洲夜间福利| 久久偷窥视频| 亚洲手机视频| 久久精品国产91精品亚洲| 在线视频国产日韩| 日韩一区二区福利| 国产欧美精品一区aⅴ影院| 久久久国产精品一区二区三区| 久久av在线看| 亚洲欧美三级伦理| 欧美精品乱人伦久久久久久| 欧美一区二区精品| 欧美日韩免费观看一区| 久久视频精品在线| 国产精品一级| 亚洲欧美国产高清| 午夜日韩激情| 久久精品噜噜噜成人av农村| 欧美成人一区二区在线 | 久久99在线观看| 亚洲在线中文字幕| 国产精品素人视频| 亚洲一区激情| 久久精品三级| 亚洲国产日韩欧美| 美女999久久久精品视频| 久久久久久久久久久久久女国产乱| 欧美三级视频| 亚洲一级网站| 噜噜噜噜噜久久久久久91| 亚洲国产精品t66y| 亚洲欧美一区二区三区久久| 亚洲一品av免费观看| 国产精品羞羞答答xxdd| 性娇小13――14欧美| 免费不卡中文字幕视频| 亚洲第一天堂无码专区| 欧美精品三级日韩久久| 日韩一级欧洲| 看片网站欧美日韩| 亚洲网址在线| 影音先锋亚洲一区| 欧美性大战久久久久| 久久青草久久| 性久久久久久| 一本一本大道香蕉久在线精品| 欧美一级片久久久久久久| 亚洲成人影音| 国产精品视频成人| 久久久久久久97| 亚洲一区二区三区久久 | 国产一区二区三区久久悠悠色av| 久久久久久一区二区三区| 在线亚洲免费视频| 另类专区欧美制服同性| 香蕉乱码成人久久天堂爱免费 | 一区二区三区在线看| 欧美精品一区二| 欧美成人日韩| 欧美黄色aaaa| 欧美另类在线观看| 欧美网站大全在线观看| 免费观看久久久4p| 免播放器亚洲一区| 久久久噜噜噜| 老司机久久99久久精品播放免费 | 免费久久99精品国产自| 亚洲淫片在线视频| 欧美在线一二三四区| 午夜精品久久久久久久久久久| 中文精品视频| 欧美中文字幕在线视频| 久久露脸国产精品| 久久一本综合频道| 亚洲欧美影院| 欧美在线观看www| 亚洲第一在线综合网站| 夜色激情一区二区| 欧美亚洲在线观看| 欧美成人资源| 国产精品美女主播| 91久久久久久| 久久久噜噜噜久噜久久| 亚洲片区在线| 久久久999精品免费| 欧美日韩视频在线一区二区观看视频 | 欧美精品久久久久a| 国产欧美在线看| 亚洲欧洲一区二区三区久久| 亚洲一区bb| 亚洲国产精品传媒在线观看 | 亚洲一区观看| 欧美激情一区二区三区高清视频| 亚洲一区二区三区在线播放| 麻豆成人精品| 亚洲第一狼人社区| 麻豆免费精品视频| 久久大逼视频| 国产一区二区三区黄视频| 亚洲天堂偷拍| 欧美电影在线观看完整版| 国产香蕉97碰碰久久人人| 亚洲神马久久| 一本色道久久88亚洲综合88| 欧美91大片| 亚洲一区免费看| 亚洲欧美成人一区二区三区| 国产精品theporn| 午夜激情综合网| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 亚洲免费一在线| 一区二区三区四区国产| 国产精一区二区三区| 久久久777| 欧美日韩性生活视频| 亚洲男人影院| 欧美尤物一区| 夜夜狂射影院欧美极品| 欧美激情麻豆| 久久在线免费| 久久美女艺术照精彩视频福利播放| 欧美成人日韩| 性刺激综合网| 久久亚洲综合色| 午夜精品久久久久久久99樱桃 | 性18欧美另类| 一区二区三区国产精华| 久久精品视频在线免费观看| 日韩小视频在线观看专区| 欧美在线观看网址综合| 亚洲欧洲一区二区三区| 久久成人精品| 久久乐国产精品| 国产精品一区二区三区四区| 亚洲精品视频在线观看网站| 狠狠干综合网| 久久综合中文| 久久综合九色综合网站| 国产精品久久久久久久久久久久| 亚洲人成欧美中文字幕| 国产在线国偷精品产拍免费yy| 欧美黄色免费| 亚洲人成在线播放网站岛国| 欧美在线观看视频在线| 卡一卡二国产精品| 亚洲第一二三四五区| 欧美激情片在线观看| 亚洲电影下载| 亚洲综合精品四区| 国产主播在线一区| 久久久亚洲国产美女国产盗摄| 99精品99久久久久久宅男|