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

coreBugZJ

此 blog 已棄。

Keywords Search,HDOJ 2222

Keywords Search

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Problem Description
In the modern time, Search engine came into the life of everybody like Google, Baidu, etc.
Wiskey also wants to bring this feature to his image retrieval system.
Every image have a long description, when users type some keywords to find the image, the system will match the keywords with description of image and show the image which the most keywords be matched.
To simplify the problem, giving you a description of image, and some keywords, you should tell me how many keywords will be match.
 

Input
First line will contain one integer means how many cases will follow by.
Each case will contain two integers N means the number of keywords and N keywords follow. (N <= 10000)
Each keyword will only contains characters 'a'-'z', and the length will be not longer than 50.
The last line is the description, and the length will be not longer than 1000000.
 

Output
Print how many keywords are contained in the description.
 

Sample Input
1
5
she
he
say
shr
her
yasherhs
 

Sample Output
3


AC 自動機

我的代碼:

  1 #include <iostream>
  2 #include <cstdio>
  3 
  4 using namespace std;
  5 
  6 const int ACTC = 26;
  7 const int ACTM = 800000;
  8 const int ACQL = 800000;
  9 
 10 struct AC
 11 {
 12         int count;
 13         AC * fail;
 14         AC * ch[ ACTC ];
 15 };
 16 
 17 AC * que[ ACQL ];
 18 
 19 AC * ac_new( bool init = false ) {
 20         int i;
 21         AC * p;
 22         static AC memAC[ ACTM ];
 23         static int tot = 0;
 24         if ( init ) {
 25                 tot = 0;
 26                 return 0;
 27         }
 28         p = memAC + tot++;
 29         p->count = 0;
 30         p->fail  = 0;
 31         for ( i = 0; i < ACTC; ++i )
 32                 p->ch[ i ] = 0;
 33         return p;
 34 }
 35 
 36 int ac_add( AC * & root, const char * first, const char * last ) {
 37         AC ** p = &root;
 38         for ( ; ; ) {
 39                 if ( *== 0 ) *= ac_new();
 40                 if ( first == last ) return ++( (*p)->count );
 41                 p = &( (*p)->ch[ *first++ ] );
 42         }
 43 }
 44 
 45 void ac_build( AC * root ) {
 46         // root != 0
 47         int qh = 0, qt = 1, i;
 48         AC *pf, *pc, *pt;
 49         root->fail = 0;
 50         que[ 0 ] = root;
 51         while ( qh != qt ) {
 52                 pf = que[ qh ];
 53                 qh = ( qh + 1  ) % ACQL;
 54                 for ( i = 0; i < ACTC; ++i ) {
 55                         if ( pc = pf->ch[ i ] ) {
 56                                 for ( pt = pf->fail; pt && ( pt->ch[ i ] == 0 ); pt = pt->fail )
 57                                         ;
 58                                 pc->fail = pt ? pt->ch[ i ] : root;
 59                                 que[ qt ] = pc;
 60                                 qt = ( qt + 1 ) % ACQL;
 61                         }
 62                 }
 63         }
 64 }
 65 
 66 int ac_query( AC * root, const char * first, const char * last ) {
 67         // root != 0
 68         int ans = 0;
 69         AC *= root, *q;
 70         while ( first != last ) {
 71                 while ( p && ( p->ch[ *first ] == 0 ) ) {
 72                         p = p->fail;
 73                 }
 74                 if ( p ) {
 75                         q = p = p->ch[ *first++ ];
 76                         while ( q && ( q->count != -1 ) ) {
 77                                 ans += q->count;
 78                                 q->count = -1;
 79                                 q = q->fail;
 80                         }
 81                 }
 82                 else {
 83                         p = root;
 84                         ++first;
 85                 }
 86         }
 87         return ans;
 88 }
 89 
 90 char txt[ 1000009 ], pat[ 70 ];
 91 AC * root;
 92 
 93 int main() {
 94         int td, n;
 95         char * pc;
 96         scanf( "%d"&td );
 97         while ( td-- ) {
 98                 scanf( "%d%*c"&n );
 99                 ac_new( true );
100                 root = 0;
101                 while ( n-- ) {
102                         gets( pat );
103                         for ( pc = pat; *pc; ++pc )
104                                 *pc -= 'a';
105                         ac_add( root, pat, pc );
106                 }
107                 gets( txt );
108                 for ( pc = txt; *pc; ++pc )
109                         *pc -= 'a';
110                 ac_build( root );
111                 printf( "%d\n", ac_query( root, txt, pc ) );
112         }
113         return 0;
114 }
115 


posted on 2011-03-25 17:34 coreBugZJ 閱讀(469) 評論(0)  編輯 收藏 引用 所屬分類: ACM

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美高清视频在线| 欧美理论电影在线播放| 国产综合在线看| 久久久久免费| 久久久噜噜噜久久久| 一区视频在线看| 亚洲高清激情| 欧美福利视频一区| 亚洲影院色无极综合| 一区二区三区黄色| 国产主播在线一区| 欧美成人午夜77777| 欧美日韩成人综合天天影院| 亚洲综合大片69999| 欧美在线观看视频在线| 亚洲激情影视| 国产一区二区在线免费观看| 亚洲福利在线观看| 亚洲裸体视频| 国产亚洲成av人在线观看导航 | 欧美顶级大胆免费视频| 中国成人在线视频| 欧美一区二区三区免费大片| 亚洲国产日韩一区二区| 一本到12不卡视频在线dvd| 国产亚洲综合精品| 亚洲大片在线观看| 国产精品美女一区二区| 麻豆国产精品777777在线| 欧美精品成人| 久久精品二区三区| 欧美高清在线播放| 久久本道综合色狠狠五月| 免费视频久久| 欧美一区二区日韩一区二区| 久热re这里精品视频在线6| 亚洲一二三区在线观看| 久久久久久久久一区二区| 亚洲一二三区精品| 免费成人av| 欧美一区成人| 欧美激情按摩| 久久琪琪电影院| 欧美日韩一区在线视频| 蜜桃伊人久久| 国产精品免费视频观看| 狠狠入ady亚洲精品经典电影| 免费成人毛片| 国产精品久久网站| 亚洲国产成人久久综合| 国产日本精品| 亚洲美女在线看| 亚洲第一区在线| 亚洲欧美国产高清| 99这里只有精品| 久久久久久夜| 欧美伊人久久| 欧美日韩国产精品一区二区亚洲| 久久手机免费观看| 国产精品视频网址| 亚洲精品三级| 亚洲激情一区二区| 久久精品国产一区二区三区| 亚洲欧美一区二区原创| 欧美激情在线有限公司| 另类av一区二区| 国产欧美一区二区三区沐欲 | 国产精品制服诱惑| 亚洲精品久久久久中文字幕欢迎你| 国产一区久久| 亚洲一区在线视频| 中文在线不卡| 欧美在线亚洲综合一区| 久久精品免费看| 欧美伊人精品成人久久综合97| 欧美视频中文字幕在线| 亚洲国产视频一区二区| 亚洲第一页中文字幕| 欧美一区=区| 欧美一区二区啪啪| 国产精品高清免费在线观看| 亚洲精品视频中文字幕| 亚洲三级毛片| 麻豆av一区二区三区| 久久综合一区| 激情综合色丁香一区二区| 香蕉久久夜色| 欧美综合77777色婷婷| 欧美午夜不卡| 99天天综合性| 这里只有精品视频| 欧美日韩国产首页| 亚洲欧洲精品一区二区三区波多野1战4| 国外成人在线视频| 久久成人精品视频| 久久久精品国产免费观看同学| 国产精品尤物| 欧美一区二区播放| 欧美中在线观看| 国产精品主播| 午夜精品久久久久久久99黑人| 亚洲欧美日韩在线一区| 国产精品麻豆欧美日韩ww| 亚洲视频中文字幕| 午夜精品福利在线观看| 国产精品视频大全| 午夜精品福利视频| 欧美综合国产精品久久丁香| 国产一区二区三区四区三区四| 欧美伊人久久久久久午夜久久久久 | 亚洲第一综合天堂另类专| 麻豆久久精品| 久久综合一区| 亚洲激情视频在线| 欧美大片一区二区| 亚洲国产人成综合网站| 亚洲毛片av在线| 欧美日韩视频在线一区二区| aa级大片欧美| 欧美一区二区三区日韩| 国产一区二区按摩在线观看| 久久精品国产一区二区三区| 欧美成人精品一区二区三区| 亚洲韩国青草视频| 欧美日韩a区| 亚洲手机视频| 久久久99爱| 亚洲激情电影在线| 欧美日韩国产天堂| 亚洲一区二区三区免费观看| 久久精品国产久精国产爱| 狠狠狠色丁香婷婷综合久久五月| 久久亚洲不卡| 欧美人在线观看| 一区二区三区高清不卡| 欧美影院在线播放| 在线观看视频一区二区| 欧美精品一区二| 亚洲午夜伦理| 另类av一区二区| 一区二区三区免费看| 国产精品丝袜91| 久久久久久午夜| 亚洲精品视频在线| 亚洲伊人久久综合| 国内精品免费在线观看| 男同欧美伦乱| 一区二区三区四区国产| 久久久久久久综合狠狠综合| 最新国产乱人伦偷精品免费网站| 欧美视频二区36p| 欧美在线免费视频| 最新成人av在线| 欧美一级大片在线观看| 亚洲高清不卡| 欧美日韩专区在线| 欧美专区日韩视频| 亚洲精品国产精品乱码不99按摩 | 亚洲国产高清在线观看视频| 一本一本久久| 国产视频欧美视频| 欧美电影电视剧在线观看| 亚洲天堂偷拍| 欧美大胆人体视频| 亚洲在线日韩| 在线成人www免费观看视频| 欧美日韩三级一区二区| 久久精品在这里| 一区二区av| 欧美高清一区| 欧美一级在线视频| 亚洲美女av网站| 国产一区视频网站| 欧美日韩一卡| 久久免费视频观看| 亚洲调教视频在线观看| 欧美激情无毛| 久久精品国产亚洲一区二区| 日韩午夜av在线| 伊人成年综合电影网| 国产精品久久久久久久午夜片| 蜜桃视频一区| 欧美一区二区三区男人的天堂| 亚洲精品国产精品国自产在线| 久久综合久色欧美综合狠狠 | 亚洲国产成人精品久久久国产成人一区 | 国产精品99免费看| 久久综合久久综合久久综合| 亚洲一区区二区| 亚洲国产小视频| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲午夜在线观看| 亚洲高清不卡在线观看| 国产精品一页| 欧美日韩免费| 欧美gay视频| 在线亚洲自拍| 国产亚洲一区二区在线观看| 欧美视频导航| 欧美激情在线免费观看|