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

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 閱讀(460) 評論(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>
            亚洲第一区在线| 噜噜爱69成人精品| 国产精品一级二级三级| 亚洲午夜一级| 亚洲欧美日韩国产中文| 国产精品亚洲第一区在线暖暖韩国| 亚洲欧美日韩国产| 午夜亚洲影视| 娇妻被交换粗又大又硬视频欧美| 欧美freesex交免费视频| 免费精品视频| 亚洲一区久久久| 久久国产成人| 亚洲麻豆国产自偷在线| 99视频热这里只有精品免费| 国产精品亚洲激情| 免费欧美日韩国产三级电影| 欧美激情精品久久久| 亚洲一区二区三区涩| 欧美在线亚洲一区| 在线成人亚洲| 欧美理论在线| 一本色道久久加勒比88综合| 亚洲人成绝费网站色www| 欧美日韩国产黄| 性做久久久久久久久| 亚洲欧美网站| 欧美国产日本韩| 亚洲自拍偷拍一区| 久久亚洲私人国产精品va媚药 | 亚洲一区二区三区成人在线视频精品| 欧美大片在线看免费观看| 亚洲丝袜av一区| 久久久久亚洲综合| 最新日韩中文字幕| 日韩视频中文| 影音欧美亚洲| 亚洲视频1区2区| 亚洲日本久久| 亚洲欧美国产视频| 亚洲精品免费电影| 久久福利影视| 亚洲欧美自拍偷拍| 欧美精品一区二| 欧美一区二区黄色| 欧美高清在线观看| 在线观看日产精品| 欧美国产日韩精品| 欧美视频在线观看一区二区| 欧美成人午夜激情视频| 国产精品日本| 一本色道久久综合狠狠躁的推荐| 美女黄毛**国产精品啪啪| 亚洲欧美日韩国产成人| 欧美黄免费看| 久久综合网hezyo| 国产精品va在线播放我和闺蜜| 欧美亚洲色图校园春色| 久久综合久久久| 久久久一区二区| 国产亚洲第一区| 99视频精品在线| 亚洲欧洲日本mm| 亚洲欧洲精品一区二区三区| 久久久国产亚洲精品| 亚洲欧美亚洲| 久久久噜噜噜久噜久久| 一区二区三区精品在线| 你懂的国产精品永久在线| 午夜在线视频观看日韩17c| 欧美一区二区三区免费在线看| 一区二区高清在线| 久久久久久穴| 亚洲影视综合| 久久精品免视看| 亚洲一区影院| 久久激情网站| 久久综合色播五月| 亚洲高清一区二区三区| 久久国产精品黑丝| 久久久综合香蕉尹人综合网| 欧美日韩国产色综合一二三四| 欧美一区二区高清在线观看| 欧美成熟视频| 久久久久www| 欧美日韩一区精品| 亚洲欧美国产三级| 亚洲乱码国产乱码精品精 | 亚洲精品久久久久| 一区二区三区国产精品| 欧美激情视频免费观看| 一区二区三区四区国产| 欧美夜福利tv在线| 影音先锋日韩精品| 欧美日韩高清不卡| 亚洲一区二区三区四区在线观看| 久久久久国产精品一区三寸| 91久久国产精品91久久性色| 欧美日韩少妇| 欧美在线亚洲综合一区| 亚洲欧洲精品天堂一级| 亚洲欧美日韩国产成人精品影院| 国内成+人亚洲+欧美+综合在线| 蜜臀av性久久久久蜜臀aⅴ四虎| 99精品国产热久久91蜜凸| 久久天堂国产精品| 亚洲无人区一区| 亚洲国产精品va在看黑人| 国产精品久久久一区麻豆最新章节| 久久久久久一区| 亚洲图片欧美午夜| 亚洲电影免费观看高清完整版在线| 亚洲在线成人精品| 亚洲黄色成人久久久| 国产欧美日韩亚洲一区二区三区| 欧美高清在线视频| 亚洲激情成人在线| 国产乱码精品| 国产精品第2页| 欧美顶级少妇做爰| 久久精品一区二区三区不卡牛牛| 亚洲美女毛片| 欧美不卡高清| 久久中文久久字幕| 亚洲美女视频网| 国产精品主播| 久久精品在线播放| 欧美亚洲在线播放| 亚洲欧洲日产国产网站| 亚洲欧美在线高清| 亚洲天天影视| 国内成+人亚洲+欧美+综合在线| 欧美波霸影院| 性久久久久久久久| 亚洲欧美视频在线观看视频| 欧美高清视频在线| 亚洲欧美中日韩| 亚洲三级免费| 日韩视频在线观看| 国产精品高潮呻吟久久| 奶水喷射视频一区| 欧美一区二区三区在线观看| 亚洲黄色影院| 久久亚洲影院| 久久亚洲精品一区二区| 亚洲第一页在线| 国产日韩欧美电影在线观看| 久久久国产精品一区二区中文| 蜜臀av国产精品久久久久| 亚洲一区二区三| 亚洲高清免费在线| 国产精品乱子久久久久| 你懂的亚洲视频| 免费视频一区| 最新69国产成人精品视频免费| 久久精品在这里| 欧美一区二区黄| 亚洲国产视频直播| 夜夜精品视频| 亚洲一区二区三区精品在线观看| 女主播福利一区| 欧美aa国产视频| 亚洲免费精彩视频| 亚洲精品视频免费观看| 美乳少妇欧美精品| 久久蜜桃香蕉精品一区二区三区| 美女福利精品视频| 久久久久久一区二区| 欧美在线短视频| 久久狠狠一本精品综合网| 亚洲欧洲久久| 亚洲另类春色国产| 亚洲毛片av在线| 一区二区三区欧美| 久久久久免费视频| 久久先锋资源| 久久综合伊人77777| 美国十次了思思久久精品导航| 亚洲欧洲免费视频| 99riav久久精品riav| 亚洲免费成人av| 亚洲午夜激情免费视频| 美国十次了思思久久精品导航| 美女脱光内衣内裤视频久久网站| 麻豆freexxxx性91精品| 欧美成人免费全部观看天天性色| 欧美中文字幕在线播放| 久久久久久伊人| 欧美sm重口味系列视频在线观看| 老司机午夜精品视频| 亚洲自拍偷拍视频| 欧美成人久久| 欧美日韩在线大尺度| 日韩一级黄色av| 午夜精品福利在线| 亚洲欧美制服中文字幕| 亚洲日本理论电影| 久久精品国产96久久久香蕉| 久久综合色8888| 欧美激情一区二区|