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

            學習心得(code)

            superlong@CoreCoder

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

            公告

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

            常用鏈接

            留言簿(4)

            我參與的團隊

            搜索

            •  

            最新隨筆

            最新評論

            • 1.?re: Poj 1279
            • 對于一個凹多邊形用叉積計算面積 后能根據結果的正負來判斷給的點集的時針方向?
            • --bsshanghai
            • 2.?re: Poj 3691
            • 你寫的這個get_fail() 好像并是真正的get_fail,也是說fail指向的串并不是當前結點的子串。為什么要這樣弄呢?
            • --acmer1183
            • 3.?re: HDU2295[未登錄]
            • 這個是IDA* 也就是迭代加深@ylfdrib
            • --superlong
            • 4.?re: HDU2295
            • 評論內容較長,點擊標題查看
            • --ylfdrib
            • 5.?re: HOJ 11482
            • 呵呵..把代碼發在這里很不錯..以后我也試試...百度的編輯器太爛了....
            • --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
            當太陽的光輝逐漸被月亮遮蔽,世界失去了光明,大地迎來最黑暗的時刻。。。。在這樣的時刻,人們卻異常興奮——我們能在有生之年看到500年一遇的世界奇觀,那是多么幸福的事兒啊~~
            但 網路上總有那么些網站,開始借著民眾的好奇心,打著介紹日食的旗號,大肆傳播病毒。小t不幸成為受害者之一。小t如此生氣,他決定要把世界上所有帶病毒的 網站都找出來。當然,誰都知道這是不可能的。小t卻執意要完成這不能的任務,他說:“子子孫孫無窮匱也!”(愚公后繼有人了)。
            萬事開頭難,小t 收集了好多病毒的特征碼,又收集了一批詭異網站的源碼,他想知道這些網站中哪些是有病毒的,又是帶了怎樣的病毒呢?順便還想知道他到底收集了多少帶病毒的 網站。這時候他卻不知道何從下手了。所以想請大家幫幫忙。小t又是個急性子哦,所以解決問題越快越好哦~~
             

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

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

            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)  編輯 收藏 引用
            精品综合久久久久久97超人| 久久久久久久97| 久久香蕉国产线看观看99| 一本久久久久久久| 无夜精品久久久久久| 天天爽天天狠久久久综合麻豆| 久久久久无码精品国产不卡| 91精品国产91久久| 色欲综合久久躁天天躁蜜桃| 国产精品久久久久久久| 久久久精品国产| 精品久久久久久无码中文字幕| 亚洲国产精品一区二区三区久久| 久久久亚洲欧洲日产国码aⅴ | 久久久久久精品免费看SSS| 久久婷婷国产综合精品 | 99久久免费国产精品热| 91久久精品电影| 久久综合给合久久狠狠狠97色| 久久―日本道色综合久久| 狠狠色丁香久久婷婷综合图片| 青青青伊人色综合久久| 性高湖久久久久久久久| 色综合合久久天天给综看| 久久精品国产清自在天天线| 国产成人精品免费久久久久| 久久99久久99精品免视看动漫| 色婷婷久久综合中文久久一本| 国产69精品久久久久9999| 久久久久久a亚洲欧洲aⅴ | 国产高潮久久免费观看| 99久久无色码中文字幕| 韩国免费A级毛片久久| 欧洲人妻丰满av无码久久不卡| 亚洲综合精品香蕉久久网| 婷婷久久综合| 亚洲国产成人精品久久久国产成人一区二区三区综 | 国产精品久久久久久久午夜片 | 久久久久人妻一区精品| 久久久精品久久久久久| 一本久久精品一区二区|