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

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>
            欧美性大战久久久久久久蜜臀| 国产精品二区三区四区| 国内成人在线| 久久久xxx| 久久手机免费观看| 亚洲国产成人精品视频| 欧美大片18| 欧美黄在线观看| 亚洲免费伊人电影在线观看av| 亚洲男人影院| 精品成人在线| 亚洲激情亚洲| 国产精品日韩欧美一区二区三区| 欧美在线日韩精品| 久久婷婷成人综合色| 99精品久久免费看蜜臀剧情介绍| 一区二区激情小说| 韩日视频一区| 最新国产の精品合集bt伙计| 国产精品扒开腿爽爽爽视频| 久久久一区二区三区| 欧美激情一区二区三区 | 久久精品中文| 亚洲国产一二三| 在线亚洲激情| 亚洲第一精品夜夜躁人人爽 | 牛牛精品成人免费视频| 欧美日本免费一区二区三区| 久久av免费一区| 欧美成人一区二区三区| 性做久久久久久| 欧美 日韩 国产 一区| 午夜伦理片一区| 另类激情亚洲| 久久精品日产第一区二区| 欧美精品一区在线播放| 久久婷婷av| 欧美日韩一区二区视频在线观看| 久久久美女艺术照精彩视频福利播放 | 久久蜜桃精品| 国产精品久久久久久超碰| 欧美黄色免费网站| 国产欧美一区二区三区在线老狼 | 亚洲一区二区三区视频播放| 亚洲激情电影中文字幕| 欧美一区二区三区婷婷月色| 一区二区电影免费观看| 久久天天躁夜夜躁狠狠躁2022| 亚洲欧美国产三级| 欧美日韩精品一区二区在线播放| 免费日韩成人| 激情成人在线视频| 欧美一区二区视频在线| 亚洲欧美精品| 欧美日韩亚洲国产一区| 亚洲激情二区| 91久久精品日日躁夜夜躁欧美 | 亚洲一区黄色| 亚洲欧美电影在线观看| 欧美色图五月天| 亚洲美女一区| a4yy欧美一区二区三区| 欧美精品手机在线| 最新日韩中文字幕| 亚洲精一区二区三区| 欧美电影免费观看高清完整版| 欧美电影在线观看完整版| 有坂深雪在线一区| 久久综合狠狠| 亚洲国产精品一区二区三区| 亚洲欧洲日产国产网站| 欧美电影免费观看网站| 亚洲国产一区二区a毛片| 亚洲狼人综合| 欧美日韩久久不卡| 一区二区三区蜜桃网| 亚洲欧美日韩精品久久| 国产亚洲精品aa| 久久精品中文字幕一区| 欧美国产1区2区| 日韩视频久久| 国产精品欧美日韩| 久久国产精品电影| 免费亚洲电影在线观看| 亚洲精一区二区三区| 欧美日韩亚洲成人| 欧美亚洲免费| 欧美韩日一区二区三区| 亚洲天堂男人| 国产精品揄拍一区二区| 久久国产直播| 亚洲精品一区二区三区樱花 | 亚洲欧美另类中文字幕| 国产麻豆午夜三级精品| 久久久久九九九| 91久久精品一区二区别| 亚洲欧洲99久久| 在线欧美亚洲| 国产精品a久久久久| 欧美自拍偷拍| 日韩一区二区高清| 卡通动漫国产精品| 亚洲在线一区| 亚洲第一在线综合在线| 欧美亚男人的天堂| 巨乳诱惑日韩免费av| 一本色道久久88精品综合| 久久久久天天天天| 亚洲视频免费看| 激情成人综合| 国产精品欧美在线| 欧美风情在线观看| 久久国产免费看| 一区二区三区高清不卡| 欧美激情一区二区久久久| 欧美在线观看一区二区| 亚洲每日在线| 影院欧美亚洲| 国产一区二区三区在线观看免费 | 欧美片第一页| 久久久一区二区| 午夜精品一区二区三区电影天堂 | 久久爱另类一区二区小说| 亚洲伦理在线观看| 欧美福利视频在线观看| 久久精品国产一区二区三| 亚洲免费在线观看| 9i看片成人免费高清| 亚洲欧洲在线看| 狠狠久久五月精品中文字幕| 国产精品视频一二| 欧美偷拍一区二区| 欧美精品久久99| 免费永久网站黄欧美| 久久一二三四| 久热爱精品视频线路一| 久久久www成人免费精品| 性欧美激情精品| 性欧美videos另类喷潮| 亚洲欧美日韩中文在线制服| 正在播放亚洲一区| 国产精品99久久不卡二区| 日韩一级黄色大片| 一本色道久久加勒比88综合| 日韩一区二区精品| 一本不卡影院| 亚洲午夜精品网| 亚洲一区二区三区视频播放| 亚洲午夜av在线| 亚洲免费视频观看| 欧美一区二区三区精品电影| 性一交一乱一区二区洋洋av| 欧美在线首页| 久久欧美肥婆一二区| 美女诱惑一区| 欧美精品一区二区视频| 欧美日韩精品二区| 国产精品久久亚洲7777| 国产欧美一区二区三区在线看蜜臀 | 亚洲午夜免费视频| 新狼窝色av性久久久久久| 久久精品91久久久久久再现| 久久综合电影| 欧美日韩国产三级| 国产精品欧美久久| 国产一区二区| 亚洲国产精品va| 在线亚洲伦理| 久久久精品动漫| 欧美激情中文字幕一区二区 | 欧美在线短视频| 欧美va天堂va视频va在线| 亚洲肉体裸体xxxx137| 亚洲网址在线| 久久免费高清| 欧美日韩亚洲精品内裤| 国产主播一区| 亚洲毛片视频| 久久精品理论片| 91久久中文字幕| 亚久久调教视频| 欧美精品色网| 国产综合视频在线观看| 一本高清dvd不卡在线观看| 欧美在线观看视频一区二区三区| 欧美福利一区二区| 亚洲视频播放| 免费在线视频一区| 国产午夜精品久久久久久久| 亚洲精品资源美女情侣酒店| 久久精品亚洲热| 亚洲免费久久| 卡一卡二国产精品| 国产日韩欧美| 亚洲手机在线| 91久久国产自产拍夜夜嗨| 久久国产精品色婷婷| 欧美一区午夜视频在线观看| 欧美国产三区| 欧美在线一二三|