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

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>
            91久久久久久| 香蕉成人久久| 欧美日韩在线精品一区二区三区| 老色鬼久久亚洲一区二区| 久久久精品一品道一区| 久久亚洲综合色| 欧美成人免费一级人片100| 欧美jizz19性欧美| 国产精品成人一区二区三区夜夜夜 | 精品动漫3d一区二区三区免费版| 国产日韩欧美不卡在线| 国产主播精品| 亚洲激情啪啪| 亚洲综合精品四区| 久久阴道视频| 日韩午夜中文字幕| 久久精品亚洲精品国产欧美kt∨| 欧美.com| 国产一区二区高清| 9l国产精品久久久久麻豆| 亚洲制服av| 欧美.日韩.国产.一区.二区| 亚洲美女av黄| 久久久亚洲精品一区二区三区 | 久久大逼视频| 欧美日韩极品在线观看一区| 国产一区视频网站| 亚洲一区二区av电影| 老司机一区二区三区| 一本一本a久久| 久久亚洲春色中文字幕| 国产精品久久看| 亚洲免费观看高清在线观看| 久久成人一区二区| 一本色道88久久加勒比精品| 久久综合网hezyo| 国产日韩欧美在线一区| 一本色道久久| 亚洲国产精品成人| 久久久99久久精品女同性| 国产精品视频导航| 一本一本久久a久久精品牛牛影视| 久久婷婷色综合| 午夜影院日韩| 国产精品最新自拍| 亚洲一线二线三线久久久| 最新成人av在线| 麻豆成人精品| 伊人伊人伊人久久| 久久久久久午夜| 欧美亚洲一区三区| 国产精品无码永久免费888| 亚洲无线一线二线三线区别av| 亚洲国产二区| 欧美成人一区二区| 亚洲精选视频在线| 亚洲七七久久综合桃花剧情介绍| 久久久久久久性| 亚洲电影免费在线| 免费观看国产成人| 久久久久久网址| 亚洲成色www8888| 欧美视频在线观看免费网址| 老色批av在线精品| 亚洲福利一区| 欧美电影免费观看高清| 久久夜精品va视频免费观看| 很黄很黄激情成人| 另类图片综合电影| 欧美成在线视频| 一区二区三区国产精品| 99re8这里有精品热视频免费| 欧美揉bbbbb揉bbbbb| 先锋影音一区二区三区| 欧美专区在线观看| 亚洲国产日韩一区二区| 91久久在线视频| 国产精品久久久久久久浪潮网站| 午夜视频精品| 久久精品一区二区三区中文字幕 | 亚洲国产一区二区三区在线播 | 午夜久久福利| **性色生活片久久毛片| 91久久精品一区| 国产精品美女主播在线观看纯欲| 欧美一区二区三区四区高清 | 国产日本欧美一区二区| 久久亚洲春色中文字幕| 欧美精品成人一区二区在线观看| 亚洲一卡久久| 久久黄金**| 夜夜嗨一区二区| 欧美在线二区| 日韩亚洲欧美一区| 欧美在线观看视频一区二区三区 | 免费观看日韩| 国产精品久久久久aaaa九色| 美女福利精品视频| 国产精品国产三级国产aⅴ9色| 麻豆国产va免费精品高清在线| 欧美三级欧美一级| 免费观看久久久4p| 国产欧美一区二区精品忘忧草| 亚洲国产一区二区三区a毛片| 国产精品综合不卡av| 亚洲国产美女精品久久久久∴| 国产欧美视频在线观看| 亚洲美女av网站| 亚洲国产婷婷香蕉久久久久久| 亚洲一级特黄| 一区二区三区精密机械公司 | 亚洲最新视频在线| 狠狠88综合久久久久综合网| 99精品黄色片免费大全| 黄色一区三区| 亚洲欧美日韩国产中文在线| 亚洲日本一区二区三区| 久久国产综合精品| 久久爱另类一区二区小说| 欧美日韩精品一区二区天天拍小说 | 欧美激情网站在线观看| 国产一区二区三区四区hd| 在线亚洲国产精品网站| 亚洲肉体裸体xxxx137| 久久久噜噜噜| 美女在线一区二区| 国产综合视频在线观看| 亚洲欧美一区二区三区在线| 亚洲自拍三区| 国产精品国产三级国产aⅴ浪潮| 亚洲区在线播放| 亚洲另类在线一区| 欧美国产精品人人做人人爱| 嫩草伊人久久精品少妇av杨幂| 精品9999| 久久这里有精品15一区二区三区| 久久天天狠狠| 一色屋精品视频免费看| 久久电影一区| 老司机午夜精品视频在线观看| 国产午夜一区二区三区| 欧美一区二区三区婷婷月色| 久久精品免费观看| 国产真实久久| 久久一区二区精品| 欧美黄色一区| 99re66热这里只有精品4| 欧美精品一级| 一区二区三区产品免费精品久久75| 亚洲中字在线| 海角社区69精品视频| 久久综合九色99| 91久久精品一区| 亚洲一区二区三区四区视频| 国产麻豆91精品| 久久九九精品99国产精品| 欧美成人日韩| 亚洲淫片在线视频| 国产真实乱偷精品视频免| 美腿丝袜亚洲色图| 在线天堂一区av电影| 久久久噜噜噜久久中文字幕色伊伊| 激情成人中文字幕| 欧美久久99| 午夜免费日韩视频| 亚洲国产精品久久人人爱蜜臀| 亚洲深夜av| 伊人久久亚洲热| 欧美性做爰毛片| 久久手机免费观看| 99re6这里只有精品| 久久久久久亚洲综合影院红桃| 久久影院午夜论| 国产精品久久久久一区二区三区共 | 欧美激情中文字幕在线| 一区二区三区欧美日韩| 久久综合一区二区| 国产精品99久久不卡二区| 国产欧美日韩综合一区在线观看 | 国产午夜精品久久久久久久| 久久综合伊人77777| 国产精品99久久久久久白浆小说| 久久一区视频| 亚洲午夜性刺激影院| 国产一区二区三区四区hd| 欧美经典一区二区三区| 久久精品成人欧美大片古装| 亚洲欧洲精品一区二区三区不卡| 久久精品理论片| 中文在线不卡| 亚洲第一精品电影| 国产精品日本一区二区| 欧美freesex交免费视频| 久久国产精品久久国产精品 | 玖玖综合伊人| 欧美一区二视频| 亚洲欧美综合v| 亚洲砖区区免费| 日韩午夜激情| 亚洲全黄一级网站|