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

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 自動(dòng)機(jī)

我的代碼:

  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) 評(píng)論(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免费看| 亚洲精品美女免费| 亚洲欧美网站| 久久永久免费| 亚洲免费观看在线视频| 亚洲欧美综合国产精品一区| 久久久久国产精品www| 欧美护士18xxxxhd| 国产欧美精品在线观看| 亚洲国产精品久久久久婷婷老年 | 乱中年女人伦av一区二区| 欧美精品麻豆| 韩国免费一区| 亚洲午夜精品一区二区| 农夫在线精品视频免费观看| 99热免费精品| 美女日韩欧美| 国产日韩专区| 亚洲午夜日本在线观看| 免费成人高清在线视频| 一区二区三区久久久| 久热精品在线视频| 国产午夜精品美女视频明星a级| 亚洲欧洲日韩女同| 久久久人成影片一区二区三区观看 | 欧美激情在线| 欧美一区二区三区日韩视频| 欧美精品一区在线| 亚洲高清不卡在线观看| 欧美一级黄色录像| 久久一区二区三区国产精品| 在线中文字幕一区| 免费久久99精品国产自| 国产一区二区三区在线观看网站| 亚洲午夜在线观看视频在线| 欧美高清在线观看| 久久久久中文| 红桃视频国产一区| 久久久精品日韩| 午夜久久tv| 国产精品素人视频| 午夜精品久久久久久| 亚洲免费观看高清在线观看| 欧美精品系列| 亚洲精品国产精品国自产观看浪潮 | 亚洲激情另类| 久久尤物电影视频在线观看| 国产又爽又黄的激情精品视频| 午夜精品久久久久久久蜜桃app | 另类激情亚洲| 亚洲电影免费观看高清| 久热精品在线| 久久男女视频| 亚洲欧洲日本一区二区三区| 亚洲二区免费| 欧美日韩天堂| 午夜精彩视频在线观看不卡| 亚洲女人av| 国内精品久久久久影院优| 久久人人97超碰精品888| 欧美在线免费观看视频| 国产主播喷水一区二区| 久久亚洲图片| 女女同性精品视频| 亚洲视频欧洲视频| 亚洲一区二区三区精品视频| 国产日韩欧美精品在线| 久久久成人网| 欧美黄色视屏| 午夜免费日韩视频| 久久精品国产99国产精品| 亚洲国产合集| 这里只有精品丝袜| 国精品一区二区三区| 欧美激情一区| 国产精品社区| 欧美阿v一级看视频| 欧美人交a欧美精品| 欧美一区二视频在线免费观看| 久久免费午夜影院| 亚洲一区在线视频| 久久久久久国产精品mv| 一区二区高清| 久久精品道一区二区三区| 日韩一级在线| 久久综合中文字幕| 亚洲精品亚洲人成人网| 99riav1国产精品视频| 国产精品s色| 免费欧美电影| 国产精品豆花视频| 欧美成人免费全部| 国产精品日韩精品欧美精品| 免费久久99精品国产| 欧美视频三区在线播放| 久久亚洲综合网| 国产精品xvideos88| 鲁大师影院一区二区三区| 国产精品国内视频| 亚洲国产欧美一区二区三区同亚洲 | 欧美.www| 国产精品久久久久久亚洲毛片| 久久一区免费| 国产伦精品一区二区三区免费 | 亚洲欧洲日韩综合二区| 国内精品视频久久| 亚洲一区二区三区视频播放| 亚洲人成在线观看网站高清| 欧美在线观看视频在线 | 亚洲欧洲偷拍精品| 精品粉嫩aⅴ一区二区三区四区| 一区二区福利| 一本久道久久久| 欧美不卡视频| 欧美黄色小视频| 亚洲福利在线视频| 久久久一二三| 嫩模写真一区二区三区三州| 国产亚洲精品aa| 亚洲欧美成人一区二区三区| 亚洲欧美经典视频| 国产精品扒开腿做爽爽爽视频| 亚洲欧洲综合| 99视频超级精品| 欧美精品少妇一区二区三区| 亚洲国产欧美一区二区三区同亚洲| 亚洲国产免费| 免费欧美在线| 亚洲人成在线观看一区二区| 亚洲精品一区在线观看| 欧美激情在线免费观看| 亚洲欧洲综合另类在线| 一区二区日韩精品| 国产精品久久国产精麻豆99网站| 一本色道久久综合亚洲精品婷婷| 亚洲一区二区毛片| 国产欧美一区二区视频| 久久精品国产精品亚洲精品| 欧美顶级大胆免费视频| 9人人澡人人爽人人精品| 国产视频久久| 亚洲女人天堂成人av在线| 亚洲欧美日韩中文播放| 国产毛片精品国产一区二区三区| 午夜综合激情| 欧美不卡在线视频| 一本色道久久加勒比88综合| 国产精品久99| 久久免费视频网| 日韩一级免费| 久久国产精品72免费观看| 激情久久中文字幕| 欧美日韩大片| 午夜精品久久久久| 亚洲国产91| 性欧美大战久久久久久久免费观看 | 久久久蜜桃一区二区人| 在线成人中文字幕| 欧美日韩亚洲高清一区二区| 亚洲欧美一级二级三级| 欧美国产三区| 欧美一区二区在线| 99视频在线观看一区三区| 国产精品亚洲不卡a| 男女视频一区二区| 先锋影音久久久| 亚洲国产精品欧美一二99| 亚洲一区在线免费| 亚洲国产精品va在看黑人| 国产精品久久久久7777婷婷| 久久久蜜桃一区二区人| 亚洲午夜免费视频| 91久久线看在观草草青青| 久久精品视频99| 亚洲视频碰碰| 亚洲免费观看| 亚洲福利视频在线| 国产偷久久久精品专区| 欧美日韩免费一区二区三区| 久久久久久网址| 午夜精品在线| 在线中文字幕一区| 亚洲日本乱码在线观看| 嫩草伊人久久精品少妇av杨幂| 午夜精品久久久久久99热| 亚洲视屏在线播放| 亚洲免费电影在线| 亚洲精品老司机| 亚洲日韩第九十九页| 极品日韩久久|