• <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>

            學(xué)習(xí)心得(code)

            superlong@CoreCoder

              C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
              74 Posts :: 0 Stories :: 5 Comments :: 0 Trackbacks

            公告

            文字可能放在http://blog.csdn.net/superlong100,此處存放代碼

            常用鏈接

            留言簿(4)

            我參與的團隊

            搜索

            •  

            最新隨筆

            最新評論

            • 1.?re: Poj 1279
            • 對于一個凹多邊形用叉積計算面積 后能根據(jù)結(jié)果的正負(fù)來判斷給的點集的時針方向?
            • --bsshanghai
            • 2.?re: Poj 3691
            • 你寫的這個get_fail() 好像并是真正的get_fail,也是說fail指向的串并不是當(dāng)前結(jié)點的子串。為什么要這樣弄呢?
            • --acmer1183
            • 3.?re: HDU2295[未登錄]
            • 這個是IDA* 也就是迭代加深@ylfdrib
            • --superlong
            • 4.?re: HDU2295
            • 評論內(nèi)容較長,點擊標(biāo)題查看
            • --ylfdrib
            • 5.?re: HOJ 11482
            • 呵呵..把代碼發(fā)在這里很不錯..以后我也試試...百度的編輯器太爛了....
            • --csuft1

            閱讀排行榜

            評論排行榜

            病毒侵襲

            Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
            Total Submission(s): 415    Accepted Submission(s): 48


            Problem Description
            當(dāng)太陽的光輝逐漸被月亮遮蔽,世界失去了光明,大地迎來最黑暗的時刻。。。。在這樣的時刻,人們卻異常興奮——我們能在有生之年看到500年一遇的世界奇觀,那是多么幸福的事兒啊~~
            但 網(wǎng)路上總有那么些網(wǎng)站,開始借著民眾的好奇心,打著介紹日食的旗號,大肆傳播病毒。小t不幸成為受害者之一。小t如此生氣,他決定要把世界上所有帶病毒的 網(wǎng)站都找出來。當(dāng)然,誰都知道這是不可能的。小t卻執(zhí)意要完成這不能的任務(wù),他說:“子子孫孫無窮匱也!”(愚公后繼有人了)。
            萬事開頭難,小t 收集了好多病毒的特征碼,又收集了一批詭異網(wǎng)站的源碼,他想知道這些網(wǎng)站中哪些是有病毒的,又是帶了怎樣的病毒呢?順便還想知道他到底收集了多少帶病毒的 網(wǎng)站。這時候他卻不知道何從下手了。所以想請大家?guī)蛶兔?。小t又是個急性子哦,所以解決問題越快越好哦~~
             

            Input
            第一行,一個整數(shù)N(1<=N<=500),表示病毒特征碼的個數(shù)。
            接下來N行,每行表示一個病毒特征碼,特征碼字符串長度在20—200之間。
            每個病毒都有一個編號,依此為1—N。
            不同編號的病毒特征碼不會相同。
            在這之后一行,有一個整數(shù)M(1<=M<=1000),表示網(wǎng)站數(shù)。
            接下來M行,每行表示一個網(wǎng)站源碼,源碼字符串長度在7000—10000之間。
            每個網(wǎng)站都有一個編號,依此為1—M。
            以上字符串中字符都是ASCII碼可見字符(不包括回車)。
             

            Output
            依次按如下格式輸出按網(wǎng)站編號從小到大輸出,帶病毒的網(wǎng)站編號和包含病毒編號,每行一個含毒網(wǎng)站信息。
            web 網(wǎng)站編號: 病毒編號 病毒編號 …
            冒號后有一個空格,病毒編號按從小到大排列,兩個病毒編號之間用一個空格隔開,如果一個網(wǎng)站包含病毒,病毒數(shù)不會超過3個。
            最后一行輸出統(tǒng)計信息,如下格式
            total: 帶病毒網(wǎng)站數(shù)
            冒號后有一個空格。
             

            Sample Input
            3
            aaa
            bbb
            ccc
            2
            aaabbbccc
            bbaacc
             

            Sample Output
            web 1: 1 2 3
            total: 1

            裸的AC自動機
            code:
            #include<iostream>
            using namespace std;

            struct tree
            {
                tree 
            *fail,*next[128];
                
            int  cnt;
            }
            *root,*p;

            tree arr[
            1000001];
            int  index,n, m;

            tree 
            *que[1000001];

            char let=0;

            void newn()
            {
                arr[index].cnt
            =0;
                
            for(int i=0;i<128;i++) arr[index].next[i]=0;
                arr[index].fail
            =NULL;
            }

            void insert(char ch[],int w)
            {
                p
            =root;
                
            int i=0,tmp;
                
            while(ch[i])
                {
                    tmp
            =ch[i]-let;
                    
            if(p->next[tmp]==0)
                    {
                        newn();
                        p
            ->next[tmp]=&arr[index++];
                    }
                    p
            =p->next[tmp];
                    i
            ++;
                }
                p
            ->cnt = w;
            }

            void get_fail()
            {
                tree 
            *q;
                p
            =root; p->fail=root;
                
            int open=-1,close=-1,i;
                
            for(i=0;i<128;i++)
                {
                    
            if(p->next[i]==0) p->next[i]=root;
                    
            else
                    {
                        p
            ->next[i]->fail=root;
                        open
            ++;
                        que[open]
            =p->next[i];
                    }
                }
                
            while(close<open)
                {
                    close
            ++;
                    q
            =que[close];
                    
            for(i=0;i<128;i++)
                    {
                        
            if(q->next[i]==0) q->next[i]=q->fail->next[i];
                        
            else
                        {
                            q
            ->next[i]->fail=q->fail->next[i];
                            open
            ++;
                            que[open]
            =q->next[i];
                        }    
                    }
                }
            }

            int a[5], len;

            int query(char ch[])
            {
                
            int num=0;
                p
            =root;
                tree 
            *q;
                
            int tmp,i=0;
                len 
            = -1;
                a[
            0= a[1= a[2= -1;
                
            while(ch[i])
                {
                    tmp
            =ch[i]-let;
                    p
            =p->next[tmp];
                    q
            =p;
                    
            while(q->cnt)
                    {
                        
            if(q->cnt != a[0&& q->cnt != a[1&& q->cnt != a[2])
                        {
                            len 
            ++;
                            a[len] 
            = q->cnt;
                        }
                        
            //q->cnt=0;
                        q=q->fail;
                    }
                    i
            ++;
                }
                
            return len;
            }

            char s[10005];
            int main()
            {
                
            int t;

                
            while(scanf("%d",&n) != EOF)
                {
                    getchar();
                    
            int i;
                    index
            =0;
                    newn();
                    root
            =&arr[index++];
                    
            char ch[201];
                    
            for(i=1;i<=n;i++)
                    {   
                        gets(ch);
                        insert(ch,i);
                    }
                    get_fail();
                    
                    scanf(
            "%d",&m);getchar();
                    
            int cnt = 0;
                    
            for(i = 1;i <= m; i ++)
                    {
                        gets(s);
                        
            int tmp = query(s);
                        
            if(tmp >= 0)
                        {
                            
            int j, k;
                            cnt 
            ++;
                            printf(
            "web %d:",i);
                            
            for(j = 0; j <= tmp; j ++)
                            
            for(k = j+1;k<=tmp; k ++)
                            
            if(a[j] > a[k]) swap(a[j],a[k]);
                            
            for(j=0;j<=tmp;j++)    printf(" %d",a[j]); putchar('\n');
                        }
                    }
                    printf(
            "total: %d\n",cnt);
                }
            }

            posted on 2009-08-13 18:35 superlong 閱讀(529) 評論(0)  編輯 收藏 引用
            久久亚洲国产最新网站| 久久精品国产一区| 精品国产日韩久久亚洲| 国产精品久久久久久久久久影院| 综合久久精品色| 99久久精品费精品国产一区二区| 狠狠色综合久久久久尤物| 日韩精品久久久久久久电影| 久久久久久国产精品免费无码| 伊人久久大香线蕉精品| 久久亚洲中文字幕精品一区四 | 亚洲精品无码久久毛片| 久久综合给合久久狠狠狠97色 | 天天爽天天狠久久久综合麻豆| 麻豆精品久久精品色综合| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 久久国产精品99久久久久久老狼| 久久亚洲高清综合| 久久免费视频网站| 久久天堂AV综合合色蜜桃网| 亚洲国产成人乱码精品女人久久久不卡 | 久久免费香蕉视频| 亚洲国产成人久久综合碰碰动漫3d| 欧美日韩精品久久久免费观看 | 国产亚洲精品久久久久秋霞| 久久亚洲高清综合| 国产精品va久久久久久久| 国产精品久久久久久久| 一本色道久久88精品综合 | 精品久久一区二区三区| 久久综合久久自在自线精品自| 久久人人添人人爽添人人片牛牛| 久久国产精品免费一区二区三区| 久久久久久人妻无码| 一本久道久久综合狠狠爱| 色婷婷噜噜久久国产精品12p| 久久99精品久久久久久齐齐| 精品久久久久久无码人妻蜜桃| 亚洲欧美精品伊人久久| 国产午夜精品久久久久九九| 亚洲成人精品久久|