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

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 閱讀(468) 評論(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>
            亚洲第一页自拍| 亚洲精品极品| 久久久久国产一区二区三区四区 | 在线观看成人av| 免费看成人av| 欧美成人网在线| 中日韩美女免费视频网站在线观看| 亚洲美女电影在线| 国产精品青草综合久久久久99| 欧美一进一出视频| 久久久久久久性| 一本色道**综合亚洲精品蜜桃冫| 夜夜精品视频| 国产综合亚洲精品一区二| 欧美韩日一区二区三区| 欧美日韩第一页| 久久精品国产第一区二区三区| 久久伊人精品天天| 亚洲视频视频在线| 久久精精品视频| 在线亚洲伦理| 久久精品色图| 亚洲在线中文字幕| 久久亚洲综合色| 亚洲砖区区免费| 久久一综合视频| 午夜精品三级视频福利| 美女网站在线免费欧美精品| 午夜视频在线观看一区二区| 久久综合久久久久88| 亚洲欧美日本日韩| 欧美不卡视频一区发布| 久久国产精品久久久久久| 欧美国产一区视频在线观看| 久久精品视频在线| 欧美视频一区二区三区| 欧美福利精品| 韩国视频理论视频久久| 中文日韩电影网站| 亚洲激情一区二区三区| 欧美一区1区三区3区公司| 夜夜嗨av一区二区三区中文字幕| 久久国产欧美日韩精品| 亚洲欧美日韩一区在线观看| 欧美美女福利视频| 亚洲国产成人精品女人久久久| 国产精品一区免费观看| 一区二区三区国产盗摄| 亚洲精品一区中文| 久久一区二区视频| 狂野欧美激情性xxxx| 国产精品一区二区女厕厕| 日韩视频免费看| 一区二区日韩免费看| 欧美成人伊人久久综合网| 暖暖成人免费视频| 尹人成人综合网| 久久久久天天天天| 可以免费看不卡的av网站| 国产亚洲成av人在线观看导航| 亚洲私人影院| 亚洲嫩草精品久久| 国产精品久久久久久久免费软件 | 午夜精品理论片| 国产精品国码视频| 亚洲欧美国产一区二区三区| 亚洲一区区二区| 国产精品丝袜91| 性欧美办公室18xxxxhd| 久久久久成人精品| 一区在线播放视频| 免费观看日韩av| 亚洲人成艺术| 亚洲专区在线视频| 国产性天天综合网| 久久亚洲国产精品日日av夜夜| 久久最新视频| 亚洲久色影视| 国产精品区一区二区三| 亚洲欧美在线观看| 蜜臀av一级做a爰片久久| 亚洲激情在线播放| 欧美美女福利视频| 亚洲欧美视频| 毛片一区二区| 一区二区三区日韩精品| 国产精品免费一区二区三区在线观看| 亚洲欧美高清| 欧美成人午夜视频| 亚洲在线一区二区三区| 国产一区欧美| 欧美激情一区二区三区在线视频 | 欧美3dxxxxhd| 亚洲午夜在线观看视频在线| 国产深夜精品| 欧美va亚洲va香蕉在线| 亚洲午夜一区二区| 美女诱惑黄网站一区| 亚洲视频精品| 好吊一区二区三区| 欧美日韩亚洲激情| 久久久人成影片一区二区三区观看| 亚洲级视频在线观看免费1级| 欧美亚洲视频| 亚洲伦理一区| 狠狠入ady亚洲精品经典电影| 欧美精品国产一区| 欧美一区二区在线| 亚洲精品美女免费| 美女成人午夜| 亚洲欧美怡红院| 亚洲精选国产| 精品成人一区| 国产精品私房写真福利视频| 欧美阿v一级看视频| 欧美一区二区三区四区夜夜大片 | 亚洲影视在线| 亚洲欧洲另类国产综合| 国产日韩欧美成人| 欧美四级在线观看| 欧美成人精品不卡视频在线观看 | 亚洲人成在线观看| 欧美ed2k| 久久综合亚洲社区| 久久成人免费视频| 亚洲一区久久久| 亚洲免费av电影| 亚洲狠狠丁香婷婷综合久久久| 国产美女精品人人做人人爽| 欧美日韩国产bt| 欧美成人精品一区二区| 久久亚洲一区二区| 久久精品国产91精品亚洲| 亚洲欧美日韩国产中文在线| 亚洲人成在线免费观看| 欧美激情精品久久久久久免费印度| 久久国产精品99国产精| 欧美一区二区三区电影在线观看| 亚洲视频免费看| 亚洲四色影视在线观看| 中文日韩在线| 亚洲五月六月| 亚洲男人天堂2024| 亚洲欧美成人精品| 欧美一区1区三区3区公司| 欧美一二三区精品| 欧美一区二区三区四区夜夜大片| 香蕉久久久久久久av网站| 亚洲永久在线观看| 欧美亚洲在线观看| 久久久中精品2020中文| 久久亚洲精品一区| 男男成人高潮片免费网站| 欧美福利视频| 亚洲精品影视| 亚洲婷婷综合色高清在线| 亚洲欧美第一页| 久久久久成人网| 欧美超级免费视 在线| 欧美日韩国产综合新一区| 欧美亚洲动漫精品| 国产乱码精品一区二区三区av| 国产一区清纯| 亚洲日本aⅴ片在线观看香蕉| 日韩视频三区| 性欧美8khd高清极品| 久久午夜视频| 亚洲国产精品嫩草影院| 一区二区欧美视频| 篠田优中文在线播放第一区| 久久免费精品视频| 欧美日韩精品三区| 国产一区二区三区四区三区四| 亚洲丰满在线| 亚洲欧美高清| 欧美大片国产精品| 亚洲一区二区三区视频| 久久蜜桃精品| 国产精品毛片在线| 亚洲国产成人tv| 午夜国产不卡在线观看视频| 女生裸体视频一区二区三区| 日韩一区二区精品| 久久深夜福利免费观看| 国产精品国产亚洲精品看不卡15| 红桃视频国产一区| 亚洲免费网站| 亚洲片在线资源| 久久久人人人| 国产欧美一区二区三区在线老狼 | 亚洲色在线视频| 久久亚洲国产成人| 一区二区三区 在线观看视| 久久久久久自在自线| 国产精品二区三区四区| 亚洲人成绝费网站色www| 欧美一区综合| 亚洲视频一区二区| 欧美日韩国产精品专区| 亚洲国产午夜|