#include#include#include#include#include#include#include#include#include#include

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

fzu Problem 2005 Computer Virus on Planet Pa

系統(tǒng) 1855 0

http://acm.fzu.edu.cn/problem.php?pid=2005

AC自動(dòng)機(jī) 需要優(yōu)化

否則超時(shí)

代碼:

      #include<iostream>

#include<cmath>

#include<cstdio>

#include<string>

#include<cstring>

#include<vector>

#include<stack>

#include<queue>

#include<set>

#include<map>

#include<algorithm>



#define LL long long



using namespace std;



const int INF=0x3f3f3f3f;

const int N=5500005;

const int M=255000;

const int K=26;

struct nodeTrie

{

    int v;

    int fail;

    int next[K];

    void initialize()

    {

        v=0;

        fail=-1;

        memset(next,-1,sizeof(next));

    }

}trie[M];

int cnt,root;

char s1[N];

char s[1005];

char pro[N];

int getNewNode()

{

    ++cnt;

    trie[cnt].initialize();

    return cnt;

}

void addWord(int p,char *s,int k)

{

    if(s[0]=='\0') return ;

    for(int i=0;s[i]!='\0';++i)

    {

        if(trie[p].next[s[i]-'A']==-1)

        trie[p].next[s[i]-'A']=getNewNode();

        p=trie[p].next[s[i]-'A'];

    }

    (trie[p].v)=k;

}

void init(int n)

{

    cnt=-1;

    root=getNewNode();

    for(int i=1;i<=n;++i)

    {

        gets(s);

        addWord(root,s,i);

    }

}

void bfs(int p)

{

    trie[p].fail=root;

    queue<int>qt;

    qt.push(p);

    while(!qt.empty())

    {

        int y;

        int x=qt.front();qt.pop();

        for(int i=0;i<K;++i)

        if(trie[x].next[i]!=-1)

        {

            qt.push(trie[x].next[i]);

            if(x==root)

            {trie[trie[x].next[i]].fail=root;continue;}

            y=trie[x].fail;

            while(y!=root&&trie[y].next[i]==-1)

            y=trie[y].fail;

            if(trie[y].next[i]!=-1)

            trie[trie[x].next[i]].fail=trie[y].next[i];

            else

            trie[trie[x].next[i]].fail=root;

        }

    }

}

int match(int p,char *s,int n)

{

    int wordCount=0;

    int l=0;

    while(s[l]!='\0')

    {

        while(trie[p].next[s[l]-'A']==-1&&p!=root)

        p=trie[p].fail;

        if(trie[p].next[s[l]-'A']!=-1)

        p=trie[p].next[s[l]-'A'];

        ++l;

        int fp=p;

        while(fp!=root)

        {

            if(trie[fp].v==-1)

            break;

            if(trie[fp].v>0)

            {++wordCount;}

            trie[fp].v=-1;

            fp=trie[fp].fail;

        }

        if(wordCount==n)

        break;

    }

    return wordCount;

}

int main()

{

    //freopen("data.in","r",stdin);

    int T;

    scanf("%d",&T);

    while(T--)

    {

        int n;

        scanf("%d ",&n);

        init(n);

        bfs(root);

        gets(s1);

        int m=0;

        for(int i=0;s1[i]!='\0';++i)

        if(s1[i]=='[')

        {

            int sum=0;

            for(++i;s1[i]>='0'&&s1[i]<='9';++i)

            sum=sum*10+s1[i]-'0';

            while(sum--)

            pro[m++]=s1[i];

            ++i;

        }else

        {

            pro[m++]=s1[i];

        }

        pro[m]='\0';

        //puts(pro);

        int ans=match(root,pro,n);

        reverse(pro,pro+m);

        ans+=match(root,pro,n-ans);

        printf("%d\n",ans);

    }

    return 0;

}


    

fzu Problem 2005 Computer Virus on Planet Pandora


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 99精品在线免费 | 国产欧美日韩精品一区二 | 国产视频毛片 | 7777成年大片免费播放器 | 成人精品在线 | 台湾亚洲精品一区二区tv | 久久精品国产400部免费看 | 精品国产麻豆 | 国产呦精品系列在线 | 午夜国产福利在线 | 九九热视频免费在线观看 | 97xxxx| 久草网在线观看 | 四虎在线精品观看免费 | 久久高清免费视频 | 香蕉久久网站 | 99资源在线观看 | 国产精品福利影院 | 狠狠色成人综合首页 | 一级成人毛片免费观看欧美 | 国产高清一区二区三区 | 精品中文字幕一区二区三区四区 | 日韩中文字幕精品视频在线 | 久在线精品视频 | 欧美成人看片黄a免费 | 天天色天天射天天干 | 久久99精品久久久久久首页 | 欧美日韩不卡码一区二区三区 | 高清在线不卡 | 亚洲免费福利视频 | 日本一级高清不卡视频在线 | 五月天国产精品 | 性欧美xo视频在线观看 | 亚洲国产精品人久久 | 亚洲人成在线精品不卡网 | 欧美成a | 色婷婷综合久久久久中文 | 天天爱天天做天天爽天天躁 | 国产亚洲欧洲 | 国产视频毛片 | 亚洲成人一区二区 |