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

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 閱讀(467) 評論(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>
            亚洲黄一区二区| 亚洲一区二区三区777| 久久国产精品久久久久久久久久| 国产精品裸体一区二区三区| 亚洲自拍高清| 午夜精品免费视频| 国产丝袜一区二区三区| 久久亚洲春色中文字幕| 久久久久.com| 日韩亚洲欧美一区二区三区| 99视频在线精品国自产拍免费观看 | 国产一区二区三区四区三区四| 久久精品国产91精品亚洲| 亚洲欧美日韩一区二区| 亚洲国产mv| 一区二区三区四区五区在线| 国内精品久久久久影院薰衣草| 免费永久网站黄欧美| 欧美日本韩国一区二区三区| 午夜影院日韩| 麻豆九一精品爱看视频在线观看免费| 亚洲精品视频免费观看| 亚洲无吗在线| 在线看日韩av| 亚洲图片欧洲图片日韩av| 黄色一区二区在线| 一本色道久久综合| 亚洲高清免费| 香蕉av福利精品导航| 亚洲日本黄色| 性欧美video另类hd性玩具| 91久久精品国产91久久性色| 亚洲影院污污.| 亚洲精品久久嫩草网站秘色| 亚洲欧美综合网| a91a精品视频在线观看| 性欧美长视频| 亚洲香蕉在线观看| 欧美成人一区二免费视频软件| 午夜精品999| 你懂的国产精品| 狂野欧美激情性xxxx| 国产精品久久久久久亚洲毛片| 亚洲第一毛片| 黑人操亚洲美女惩罚| 亚洲视频一区| 中日韩美女免费视频网址在线观看| 久久精品毛片| 欧美中文字幕在线| 国产精品日日摸夜夜摸av| 亚洲乱码国产乱码精品精| 亚洲第一主播视频| 久久动漫亚洲| 久久久久久网站| 国产精品视频内| 亚洲视频专区在线| 亚洲性图久久| 国产精品成av人在线视午夜片| 亚洲国产成人一区| 亚洲精品欧洲| 欧美久久成人| 亚洲精品乱码久久久久久| 亚洲人成网站在线播| 欧美jizzhd精品欧美巨大免费| 久久午夜国产精品| 在线观看日韩专区| 久久这里只有| 91久久极品少妇xxxxⅹ软件| 亚洲精品国产精品乱码不99 | 亚洲午夜激情| 亚洲免费在线看| 国产精品色一区二区三区| 在线综合亚洲| 久久国产毛片| 在线观看一区| 欧美国产精品劲爆| 日韩亚洲欧美一区二区三区| 亚洲视频欧美视频| 国产女人水真多18毛片18精品视频| 亚洲一区二区视频在线观看| 久久精品视频网| 在线观看一区| 欧美日韩国产999| 亚洲天堂第二页| 久久久之久亚州精品露出| 在线视频国产日韩| 欧美日本一道本在线视频| 亚洲视频精选在线| 老司机精品视频网站| 亚洲人成网在线播放| 国产精品久久久久久模特| 久久国产精品黑丝| 91久久黄色| 久久精品国产第一区二区三区| 激情六月婷婷综合| 欧美日韩视频专区在线播放| 亚洲欧美日韩电影| 欧美国产精品久久| 亚洲欧美在线另类| 亚洲福利视频专区| 国产精品老女人精品视频| 久久久久久91香蕉国产| 亚洲精品综合久久中文字幕| 久久国产精品第一页| 亚洲另类黄色| 国产综合欧美在线看| 欧美日韩视频一区二区| 久久久国产精品一区二区中文 | 欧美一区二区三区电影在线观看| 韩国av一区| 国产精品福利影院| 欧美成人精品一区| 欧美专区在线播放| 在线亚洲欧美视频| 亚洲国产高清高潮精品美女| 久久疯狂做爰流白浆xx| 这里是久久伊人| 亚洲国产第一| 好吊色欧美一区二区三区四区| 欧美视频在线一区| 欧美成人免费小视频| 久久精品视频va| 亚洲免费在线电影| 日韩一区二区高清| 亚洲激情在线激情| 欧美激情1区| 麻豆成人91精品二区三区| 欧美在线亚洲在线| 亚洲欧美日韩区| 亚洲特级毛片| 一区二区三区高清在线观看| 亚洲欧洲一区| 最近中文字幕日韩精品 | 亚洲自拍高清| 亚洲视频成人| 夜夜躁日日躁狠狠久久88av| 亚洲黄色成人久久久| 亚洲国产成人久久综合一区| 国产一区二区三区日韩| 国产欧美在线观看| 国产欧美一区二区三区视频| 国产精品一区亚洲| 国产精品一区二区a| 国产精品视频一| 国产日产欧美一区| 国产亚洲毛片| 精品91免费| 亚洲国产毛片完整版| 亚洲国产人成综合网站| 亚洲欧洲另类| 一本久道久久综合中文字幕| 亚洲美女电影在线| 一区二区三区产品免费精品久久75| 日韩午夜视频在线观看| 在线亚洲成人| 午夜久久美女| 老司机一区二区三区| 欧美多人爱爱视频网站| 亚洲精品女av网站| 亚洲欧洲综合另类在线| 99热这里只有精品8| 亚洲女ⅴideoshd黑人| 欧美影院在线| 欧美精品播放| 国产目拍亚洲精品99久久精品 | 欧美区二区三区| 欧美视频在线观看免费网址| 国产精品免费观看视频| 黄色欧美成人| 中日韩高清电影网| 久久久噜噜噜久久中文字免| 欧美不卡视频一区| 一本色道综合亚洲| 久久国产99| 欧美日韩精品是欧美日韩精品| 国产九色精品成人porny| 在线成人av| 亚洲欧美日韩一区在线观看| 久久偷窥视频| 一区二区激情小说| 久久婷婷久久| 欧美午夜一区二区三区免费大片| 国产一区二区三区成人欧美日韩在线观看 | 午夜精品一区二区在线观看 | 亚洲欧美变态国产另类| 久久亚洲色图| 在线亚洲伦理| 媚黑女一区二区| 国产视频欧美| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲欧美日韩专区| 欧美96在线丨欧| 午夜精品福利视频| 欧美日韩国产精品一区二区亚洲| 国内成+人亚洲| 亚洲欧美国产三级| 亚洲精品中文在线| 老司机免费视频久久| 国产亚洲欧美aaaa| 午夜精品久久久久久久蜜桃app |