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

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 閱讀(470) 評論(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>
            狠狠色综合一区二区| 亚洲国产一成人久久精品| 亚洲一区二区三区在线视频| 欧美黑人一区二区三区| 久久日韩精品| 亚洲免费观看在线观看| 亚洲国产精品久久| 欧美不卡视频一区发布| 99精品视频网| 亚洲夜间福利| 国内一区二区三区| 欧美福利视频在线| 欧美日韩亚洲一区二区三区| 亚洲视频精品在线| 亚洲欧美国产精品桃花| 欲香欲色天天天综合和网| 亚洲电影在线| 国产精品福利在线观看| 久久久夜色精品亚洲| 美女图片一区二区| 亚洲一区二区影院| 久久精品青青大伊人av| 亚洲精品日韩综合观看成人91| 99国产精品99久久久久久| 国产精品一区二区三区久久| 久久综合网hezyo| 欧美日韩在线一二三| 欧美影院在线播放| 欧美成人一区二区三区| 亚洲综合国产| 欧美成人精品在线观看| 亚洲影院污污.| 蜜桃精品一区二区三区 | 欧美在线一级va免费观看| 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲日本成人| 一区二区在线不卡| 一区二区不卡在线视频 午夜欧美不卡在 | 性久久久久久久久久久久| 久久久久久久国产| 午夜精品久久久99热福利| 久热精品视频在线免费观看| 欧美一站二站| 欧美日韩免费观看一区三区| 久久综合网hezyo| 国产伦精品一区二区三区| 亚洲国产成人在线| 在线电影国产精品| 午夜精品国产| 亚洲欧美另类中文字幕| 欧美日本在线| 欧美国产日韩一区| 国产中文一区| 午夜久久久久| 性色av一区二区三区在线观看| 欧美激情一区在线观看| 欧美成年人视频| 国产亚洲欧美色| 亚洲欧美韩国| 欧美一区成人| 国产精品日韩高清| 在线视频你懂得一区二区三区| 亚洲精品影视在线观看| 男女精品网站| 亚洲国产精品va| 亚洲毛片在线| 欧美日韩国产一区二区三区地区 | 免费亚洲网站| 影音先锋另类| 老司机精品久久| 亚洲国产精品一区二区第四页av| 在线播放精品| 欧美bbbxxxxx| 亚洲精品免费在线| 亚洲一区二区动漫| 国产精品theporn| 一区二区三区欧美视频| 亚洲免费人成在线视频观看| 国产精品久久久亚洲一区| 中文日韩在线| 欧美在线www| 影音国产精品| 欧美人与禽猛交乱配视频| 亚洲日本国产| 欧美一级淫片播放口| 国产亚洲欧美日韩精品| 久久精品国产99精品国产亚洲性色| 久久久久久久精| 亚洲级视频在线观看免费1级| 欧美sm重口味系列视频在线观看| 91久久精品一区二区三区| 亚洲图片在线观看| 国产伦精品一区二区三区照片91| 久久久久91| 亚洲精品精选| 久久se精品一区二区| 亚洲成人自拍视频| 欧美日韩小视频| 欧美一区二区三区四区在线观看 | 欧美~级网站不卡| 99精品99久久久久久宅男| 国产精品乱码妇女bbbb| 久久久www| 亚洲精品视频在线看| 欧美专区第一页| 亚洲精品偷拍| 国产日韩欧美夫妻视频在线观看| 另类成人小视频在线| 亚洲特级毛片| 欧美激情第一页xxx| 午夜精品成人在线| 亚洲精品国产欧美| 国产美女搞久久| 欧美日韩的一区二区| 久久精品一二三| 在线视频精品一| 亚洲高清电影| 久色成人在线| 亚欧成人精品| 一本色道久久综合亚洲精品按摩| 国内精品久久久久伊人av| 欧美日韩一级大片网址| 久久久久久尹人网香蕉| 亚洲一区二区影院| 91久久一区二区| 欧美成人一区二免费视频软件| 亚洲欧美中文字幕| 在线中文字幕日韩| 亚洲日本一区二区| 在线观看亚洲a| 国产色视频一区| 国产精品爽黄69| 欧美视频网站| 欧美日韩一区二区三区在线视频 | 欧美日韩综合| 欧美成人国产一区二区| 久久久久国产精品www| 亚洲欧美怡红院| 亚洲男同1069视频| 一区二区电影免费观看| 亚洲毛片在线看| 亚洲精选一区二区| 91久久综合亚洲鲁鲁五月天| 欧美a级在线| 麻豆精品网站| 欧美成人网在线| 亚洲大胆av| 国产日韩一区| 国产精品专区h在线观看| 国产精品老牛| 国产欧美亚洲一区| 国产日韩一区| 亚洲第一在线视频| 亚洲精品日产精品乱码不卡| 亚洲美女在线视频| 宅男在线国产精品| 亚洲欧美春色| 久久精品夜色噜噜亚洲a∨| 久久国产精品久久国产精品| 久久久噜噜噜久久人人看| 久久久久久9| 欧美成人免费在线观看| 91久久国产精品91久久性色| 亚洲乱码一区二区| 亚洲无毛电影| 久久精品论坛| 欧美激情视频在线免费观看 欧美视频免费一 | 国内精品一区二区| 亚洲福利在线观看| 在线亚洲欧美专区二区| 亚久久调教视频| 欧美好吊妞视频| 中日韩男男gay无套| 欧美专区在线观看| 欧美成人综合在线| 国产精品色婷婷| 亚洲国产精品成人精品| 亚洲一区二区三区影院| 久久av资源网站| 亚洲韩国一区二区三区| 亚洲欧美电影在线观看| 老司机午夜精品视频在线观看| 欧美激情第9页| 国产日韩欧美一区二区三区四区| 亚洲高清视频一区| 亚洲女人天堂av| 欧美福利视频在线观看| 亚洲免费伊人电影在线观看av| 久久一区国产| 国产精品一区二区久久久久| 亚洲激情av在线| 久久激情综合| 99精品黄色片免费大全| 久久国产黑丝| 国产九九视频一区二区三区| 99精品国产在热久久婷婷| 久久免费视频网站| 亚洲深夜福利在线| 欧美精品高清视频| 在线观看成人小视频|