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

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>
            免费一级欧美在线大片| 一区免费观看视频| 午夜久久久久| 久久久九九九九| 亚洲成人资源| 欧美日韩精选| 欧美一区二区播放| 欧美黄色影院| 中文高清一区| 国产欧美一区二区精品仙草咪| 欧美在线二区| 亚洲韩国精品一区| 亚洲一区在线看| 国产有码在线一区二区视频| 久久综合给合| 在线视频一区二区| 看片网站欧美日韩| 9久草视频在线视频精品| 国产精品一区毛片| 久久一区视频| 国产精品99久久久久久久女警| 久久久久久久久久久一区 | 欧美一区二区三区在线看| 男女激情久久| 亚洲欧美资源在线| 亚洲激情欧美| 国产日韩欧美日韩| 欧美激情一区二区三区不卡| 亚洲欧美国产va在线影院| 欧美黄色成人网| 欧美一区三区二区在线观看| 亚洲品质自拍| 国产在线拍偷自揄拍精品| 欧美日本亚洲视频| 久久久久一区二区三区| 亚洲调教视频在线观看| 亚洲国产精品小视频| 久久精品国产91精品亚洲| 亚洲午夜电影在线观看| 亚洲高清123| 国产日韩视频| 国产精品久久久久三级| 欧美麻豆久久久久久中文| 久久免费观看视频| 亚洲欧美在线磁力| av不卡在线观看| 亚洲激情网站免费观看| 美女在线一区二区| 久久国产加勒比精品无码| 亚洲无线观看| 日韩一级网站| 亚洲精选91| 最新成人在线| 亚洲国产一区二区a毛片| 含羞草久久爱69一区| 国产欧美精品一区二区色综合| 欧美日韩精品免费观看视一区二区 | 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲在线中文字幕| 一卡二卡3卡四卡高清精品视频 | 日韩视频免费在线| 亚洲三级免费观看| 亚洲国产视频一区| 欧美高清hd18日本| 欧美激情一区二区久久久| 六月婷婷一区| 免费成人黄色| 欧美成人精品一区二区| 美女视频网站黄色亚洲| 久久先锋资源| 老司机久久99久久精品播放免费| 久久成人这里只有精品| 久久九九久久九九| 久久蜜桃资源一区二区老牛 | 一区二区三区精品视频在线观看| 亚洲精品在线一区二区| 亚洲理论在线| 日韩亚洲精品电影| 亚洲视频axxx| 亚洲欧美日韩国产一区二区三区| 亚洲欧美综合国产精品一区| 午夜天堂精品久久久久| 久久精品国产精品亚洲综合| 久久综合国产精品| 欧美激情bt| 欧美性开放视频| 国产美女高潮久久白浆| 永久555www成人免费| 亚洲区中文字幕| 亚洲私人黄色宅男| 久久精品国产第一区二区三区最新章节 | 欧美在线日韩在线| 久久一区二区三区国产精品| 欧美精品电影| 国产精品萝li| 激情成人中文字幕| 夜夜嗨av一区二区三区四季av| 亚洲视频在线观看网站| 久久精品视频在线| 亚洲成色www8888| 亚洲视频久久| 久久亚洲高清| 国产精品国产三级国产专播品爱网| 国产日韩av高清| 亚洲清纯自拍| 欧美亚洲一区二区在线| 欧美高清视频一区二区| 中国av一区| 蜜臀a∨国产成人精品| 国产精品国产自产拍高清av王其| 国产揄拍国内精品对白| 99riav国产精品| 久久av在线| 亚洲免费av电影| 久久久国产一区二区三区| 欧美日韩视频在线| 在线看一区二区| 午夜精品影院在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整 | 中国成人在线视频| 久久综合色影院| 国产精品视频久久久| 亚洲日本无吗高清不卡| 欧美综合国产| 日韩亚洲国产精品| 久久久久国产精品一区二区| 欧美日韩在线视频首页| 亚洲国产日韩欧美在线动漫| 午夜免费久久久久| 亚洲经典在线看| 久久精品一区二区三区四区| 欧美三日本三级少妇三2023| 亚洲国产成人久久综合一区| 午夜久久一区| 日韩视频永久免费| 欧美成人精精品一区二区频| 国内精品美女av在线播放| 亚洲综合欧美日韩| 亚洲欧洲日产国产综合网| 久久久久99精品国产片| 国产精品亚洲а∨天堂免在线| 99在线精品免费视频九九视| 欧美3dxxxxhd| 久久精品免费播放| 国产日韩欧美精品| 亚洲欧美在线高清| 在线视频亚洲| 欧美日韩人人澡狠狠躁视频| 亚洲国产欧美在线人成| 久久综合中文字幕| 久久精品国产99精品国产亚洲性色 | 开元免费观看欧美电视剧网站| 亚洲女女女同性video| 国产精品久久影院| 亚洲免费视频在线观看| 中国女人久久久| 欧美性做爰毛片| 亚洲一区尤物| 亚洲香蕉伊综合在人在线视看| 欧美午夜视频网站| 亚洲小说欧美另类婷婷| 99视频精品免费观看| 国产精品av久久久久久麻豆网| 在线亚洲欧美专区二区| 夜色激情一区二区| 欧美性生交xxxxx久久久| 亚洲主播在线播放| 亚洲一区免费在线观看| 国产农村妇女精品一二区| 久久狠狠一本精品综合网| 欧美一区二区私人影院日本| 好男人免费精品视频| 久久米奇亚洲| 免费欧美电影| 在线视频一区二区| 亚洲香蕉在线观看| 国内成人精品2018免费看 | 国产一区二区三区观看 | 午夜性色一区二区三区免费视频| 国产欧美一区二区三区沐欲| 久久乐国产精品| 麻豆9191精品国产| 一本色道**综合亚洲精品蜜桃冫 | 国内精品久久久久久久影视蜜臀 | 欧美精品手机在线| 亚洲午夜精品一区二区| 亚洲欧美日韩成人| 在线免费观看日本欧美| 亚洲精品欧美在线| 国产精品一级| 欧美激情2020午夜免费观看| 欧美日韩视频专区在线播放| 午夜亚洲视频| 久热精品视频在线观看| 中国亚洲黄色| 久久久91精品国产一区二区三区 | 农村妇女精品| 欧美三级小说| 久久久久国产一区二区三区| 欧美不卡在线|