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

poj 1200 Crazy Search 字符串hash

   這個題是求一個字符串里面出現了多少個長度為N的不同子串,同時給出了母串里面不同字符
的個數NC。
   保存子串到set里面直接暴力肯定超時了。這個題有個利用字符串hash的解法,雖然理論上有
bug,但是能過這個題。
   利用給出的NC,對長度為N的字符串,將其當作NC進制的數字,求出其值,對值進行hash,
求出不同的hash位置個數。
   這個算法其實類似于Karp-Rabin字符串匹配算法。不過,Karp-Rabin算法做了點改進,對
進制為D的字符串求值的時候為了防止溢出會模一個素數,而且不會每次都迭代求下一個子串的
值,而是從當前子串的值直接遞推出下一個字符的值。怎么遞推了,其實很簡單,就是當前值去
掉最高位再乘以D(相當于左移一位,不過是D進制的,不能直接用<<符號),再加上新的最低位。
   Karp-Rabin算法應該主要在于設計出合理的hash算法,比如,用取模hash函數的話,得保
證hash表足夠大,否則沖突太多,速度就不會怎么好了。比如這個題,hash表小了就AC不了了。

   代碼如下:
#include <stdio.h>
#include <string.h>

const int MAX = 13747347;
int nHash[MAX];
char szStr[17000001];
int nN, nNC;
int nW[200];

void Insert(int nKey)
{
    int nPos = nKey;
    while (nHash[nPos] != -1 && nHash[nPos] != nKey)
    {
        nPos = (nPos + 1) % MAX;
    }
    nHash[nPos] = nKey;
}

bool Find(int nKey)
{
    int nPos = nKey;
    while (nHash[nPos] != -1 && nHash[nPos] != nKey)
    {
        nPos = (nPos + 1) % MAX;
    }
    return nHash[nPos] != -1;
}

int main()
{
    while (scanf("%d%d%s", &nN, &nNC, szStr) == 3)
    {
        memset(nW, 0, sizeof(nW));
        memset(nHash, -1, sizeof(nHash));
        int nNum = 0;
        int nSize = 0;
        for (char* pszStr = szStr; *pszStr; ++pszStr)
        {
            if (!nW[*pszStr])
            {
                nW[*pszStr] = ++nNum;
            }
            ++nSize;
        }

        int nKey = 0;
        int nAns = 0;
        int nPowN = 1;
        for (int j = 0; j < nN; ++j)
        {
            nKey = (nKey * nNC + nW[szStr[j]]) % MAX;
            nPowN *= nNC;
        }
        nPowN /= nNC;
        if (!Find(nKey))
        {
            Insert(nKey);
            nAns++;
        }
        
        for (int i = nN; i < nSize; ++i)
        {
            nKey = (nNC * (nKey - nPowN * nW[szStr[i - nN]])
                    + nW[szStr[i]]) % MAX;
            nKey = (nKey + MAX) % MAX;
            
            if (!Find(nKey))
            {
                Insert(nKey);
                nAns++;
            }
        }
        
        printf("%d\n", nAns);
    }

    return 0;
}

posted on 2012-09-27 22:07 yx 閱讀(1064) 評論(0)  編輯 收藏 引用 所屬分類: 字符串

<2012年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導航

統計

公告

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

me

好友

同學

網友

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲永久免费视频| 亚洲欧美一区二区原创| 欧美日韩精品中文字幕| 麻豆成人综合网| 免费看精品久久片| 欧美国产日韩一二三区| 欧美区国产区| 国产精品美女主播| 国产欧美一区二区三区在线老狼| 免费日韩一区二区| 在线观看日韩www视频免费| 激情综合在线| 亚洲精品一区二区三区av| 亚洲国产另类精品专区| 99热这里只有精品8| 香蕉久久夜色精品国产| 久久久久欧美| 亚洲国产日韩一区二区| 亚洲精品亚洲人成人网| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美一区二区精品久久911| 欧美福利在线| 国产区精品在线观看| 亚洲国产精品视频一区| 亚洲欧美日韩一区在线观看| 欧美成人视屏| 午夜宅男欧美| 欧美精品久久天天躁| 国产丝袜美腿一区二区三区| 亚洲伦伦在线| 久久综合久久综合久久| 亚洲最黄网站| 免费观看在线综合| 国产一区二区精品久久99| 一本色道久久综合亚洲精品不卡| 久久黄色级2电影| 亚洲精品综合久久中文字幕| 久久久久久久综合色一本| 国产精品www网站| 亚洲精品欧美日韩专区| 久久综合久久美利坚合众国| 亚洲无限av看| 欧美日韩一区不卡| 日韩午夜电影av| 女仆av观看一区| 欧美一区激情视频在线观看| 欧美日韩免费高清一区色橹橹| 一区在线电影| 久久精品综合一区| 午夜欧美精品| 国产精品一香蕉国产线看观看 | 制服丝袜亚洲播放| 男女激情久久| 欧美在线免费看| 国产精品一区免费观看| 亚洲一区二区视频| 亚洲精品一区在线| 欧美成人精品福利| 亚洲国产婷婷香蕉久久久久久99 | 亚洲第一在线综合在线| 久久久久国产精品一区二区| 欧美激情第五页| 亚洲国产成人porn| 久久免费的精品国产v∧| 国产一区视频在线看| 欧美在线亚洲| 性做久久久久久| 国产精品主播| 欧美在线地址| 午夜精品一区二区三区在线视| 国产精品视频午夜| 久久国产精品99国产精| 欧美在线啊v一区| 韩国三级在线一区| 狂野欧美激情性xxxx| 久久在线观看视频| 亚洲精品国精品久久99热一| 亚洲人成在线观看| 欧美色区777第一页| 亚洲专区欧美专区| 午夜免费日韩视频| 亚洲国产精品第一区二区三区| 欧美粗暴jizz性欧美20| 欧美成年人网站| 亚洲视频狠狠| 欧美一区二区视频观看视频| 在线免费观看一区二区三区| 亚洲国产综合在线| 国产精品播放| 久久久综合视频| 欧美风情在线观看| 亚洲欧美电影在线观看| 久久视频国产精品免费视频在线 | 欧美韩日一区| 亚洲一区二区三区高清| 亚洲欧美日韩成人| 亚洲福利在线视频| 亚洲午夜视频在线| 亚洲国产精品国自产拍av秋霞 | 亚洲乱码国产乱码精品精98午夜| 国产精品高潮呻吟久久av无限| 欧美在线免费一级片| 欧美成人嫩草网站| 久久久国际精品| 欧美高清自拍一区| 久久成年人视频| 欧美高清日韩| 久久久久久久一区二区| 欧美日韩日日骚| 老司机67194精品线观看| 欧美精品在线一区二区三区| 久久精品视频va| 欧美日韩精品一区视频| 女女同性精品视频| 国产偷国产偷亚洲高清97cao| 日韩视频免费观看高清完整版| 在线精品视频一区二区三四| 亚洲无限乱码一二三四麻| 亚洲国产欧美一区二区三区久久 | 99国产精品私拍| 亚洲欧美日本伦理| 一区二区毛片| 免费欧美电影| 久久天天狠狠| 国产欧美日韩精品丝袜高跟鞋| 亚洲美女电影在线| 亚洲精品久久久蜜桃| 久久午夜电影| 久久综合伊人77777| 国产午夜精品理论片a级探花| 一区二区三区精品在线| 中文高清一区| 欧美日韩在线视频一区二区| 最新中文字幕亚洲| 91久久精品视频| 欧美wwwwww| 亚洲国产精品尤物yw在线观看 | 欧美在线啊v| 欧美视频在线观看一区| 亚洲美女精品成人在线视频| 亚洲免费激情| 欧美日韩精品一二三区| 日韩午夜av电影| 亚洲午夜久久久| 欧美性事在线| 亚洲欧美激情一区| 欧美在线免费观看视频| 国产在线视频欧美| 久久嫩草精品久久久精品一| 欧美国产日韩视频| 亚洲精品日日夜夜| 欧美日韩一区二区免费在线观看| 一本色道久久88综合日韩精品| 亚洲一区黄色| 国产人成精品一区二区三| 久久精品国产亚洲精品| 欧美 日韩 国产 一区| 日韩亚洲欧美成人一区| 欧美午夜电影在线| 亚洲欧美日韩人成在线播放| 久久久久久穴| 亚洲国产一区二区在线| 欧美日韩国产bt| 亚洲一区在线免费观看| 另类国产ts人妖高潮视频| 亚洲欧洲日本专区| 国产精品免费观看在线| 久久精品视频导航| 亚洲精品色图| 久久久国产视频91| 亚洲日本一区二区三区| 欧美视频福利| 久久精品首页| 一本色道久久综合狠狠躁篇的优点| 久久9热精品视频| 在线免费观看欧美| 国产精品久久久久av免费| 久久久亚洲国产美女国产盗摄| 亚洲精品在线看| 久久婷婷国产综合国色天香| 亚洲精品在线观看免费| 国产日本欧洲亚洲| 欧美日韩高清区| 久久精品亚洲一区二区| 亚洲视频碰碰| 欧美黑人在线观看| 欧美一区二区黄色| 99精品欧美一区| 久久久久国产精品一区三寸| 欧美一区二区三区久久精品| 在线精品视频一区二区三四| 国产精品www色诱视频| 米奇777在线欧美播放| 亚洲欧美日韩一区在线观看| 亚洲欧洲日夜超级视频| 女主播福利一区| 久久久久久久999| 亚洲尤物视频网| 99精品国产在热久久婷婷| 亚洲动漫精品|