HDU 1686 求子串的数量
2016-07-19 03:04
260 查看
Oulipo
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d
& %I64u
HDU
1686
Description
The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter 'e'. He was a member of the Oulipo group. A quote from the book:
Tout avait Pair normal, mais tout s’affirmait faux. Tout avait Fair normal, d’abord, puis surgissait l’inhumain, l’affolant. Il aurait voulu savoir où s’articulait l’association qui l’unissait au roman : stir son tapis, assaillant à tout instant son imagination,
l’intuition d’un tabou, la vision d’un mal obscur, d’un quoi vacant, d’un non-dit : la vision, l’avision d’un oubli commandant tout, où s’abolissait la raison : tout avait l’air normal mais…
Perec would probably have scored high (or rather, low) in the following contest. People are asked to write a perhaps even meaningful text on some subject with as few occurrences of a given “word” as possible. Our task is to provide the jury with a program that
counts these occurrences, in order to obtain a ranking of the competitors. These competitors often write very long texts with nonsense meaning; a sequence of 500,000 consecutive 'T's is not unusual. And they never use spaces.
So we want to quickly find out how often a word, i.e., a given string, occurs in a text. More formally: given the alphabet {'A', 'B', 'C', …, 'Z'} and two finite strings over that alphabet, a word W and a text T, count the number of occurrences of W in T. All
the consecutive characters of W must exactly match consecutive characters of T. Occurrences may overlap.
Input
The first line of the input file contains a single number: the number of test cases to follow. Each test case has the following format:
One line with the word W, a string over {'A', 'B', 'C', …, 'Z'}, with 1 ≤ |W| ≤ 10,000 (here |W| denotes the length of the string W).
One line with the text T, a string over {'A', 'B', 'C', …, 'Z'}, with |W| ≤ |T| ≤ 1,000,000.
Output
For every test case in the input file, the output should contain a single number, on a single line: the number of occurrences of the word W in the text T.
Sample Input
3
BAPC
BAPC
AZA
AZAZAZA
VERDI
AVERDXIVYERDIAN
Sample Output
1
3
0
KMP基础
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d
& %I64u
HDU
1686
Description
The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter 'e'. He was a member of the Oulipo group. A quote from the book:
Tout avait Pair normal, mais tout s’affirmait faux. Tout avait Fair normal, d’abord, puis surgissait l’inhumain, l’affolant. Il aurait voulu savoir où s’articulait l’association qui l’unissait au roman : stir son tapis, assaillant à tout instant son imagination,
l’intuition d’un tabou, la vision d’un mal obscur, d’un quoi vacant, d’un non-dit : la vision, l’avision d’un oubli commandant tout, où s’abolissait la raison : tout avait l’air normal mais…
Perec would probably have scored high (or rather, low) in the following contest. People are asked to write a perhaps even meaningful text on some subject with as few occurrences of a given “word” as possible. Our task is to provide the jury with a program that
counts these occurrences, in order to obtain a ranking of the competitors. These competitors often write very long texts with nonsense meaning; a sequence of 500,000 consecutive 'T's is not unusual. And they never use spaces.
So we want to quickly find out how often a word, i.e., a given string, occurs in a text. More formally: given the alphabet {'A', 'B', 'C', …, 'Z'} and two finite strings over that alphabet, a word W and a text T, count the number of occurrences of W in T. All
the consecutive characters of W must exactly match consecutive characters of T. Occurrences may overlap.
Input
The first line of the input file contains a single number: the number of test cases to follow. Each test case has the following format:
One line with the word W, a string over {'A', 'B', 'C', …, 'Z'}, with 1 ≤ |W| ≤ 10,000 (here |W| denotes the length of the string W).
One line with the text T, a string over {'A', 'B', 'C', …, 'Z'}, with |W| ≤ |T| ≤ 1,000,000.
Output
For every test case in the input file, the output should contain a single number, on a single line: the number of occurrences of the word W in the text T.
Sample Input
3
BAPC
BAPC
AZA
AZAZAZA
VERDI
AVERDXIVYERDIAN
Sample Output
1
3
0
KMP基础
#include <iostream> #include <cstdio> #include <algorithm> #include <string> using namespace std; int nex[10005]; void pre(string str){ int len=str.size(); nex[0]=-1; int i=0,j=-1; while(i<len){ if(j==-1||str[i]==str[j]){ i++;j++; nex[i]=j; }else j=nex[j]; } } int kmp(string str1,string str2){ pre(str1); int ans=0; int len1=str1.size(),len2=str2.size(),i=0,j=0; while(i<len2&&j<len1){ if(j==-1||str1[j]==str2[i]){ i++; j++; }else j=nex[j]; if(j==len1){ ans++; j=nex[j]; } } return ans; } int main() { std::cout.sync_with_stdio(false); string str1,str2; int n; cin>>n; while(n--){ cin>>str1>>str2; cout<<kmp(str1,str2)<<endl; } }
相关文章推荐
- 如何让文章像病毒一样传播
- Leetcode 307. Range Sum Query - Mutable (Python)
- office2016永久免费激活码(office2016密钥)
- “重定向次数过多”或者“Too many automatic redirections were attempted”的错误:
- nyoj 301 递推求值 矩阵快速幂
- 来选择一款适合我网站的CMS建站程序吧?
- XGen 苹果IOS神器一键新机改串清理超级全息备份支持IOS789超IGV8使用分享(企鹅290093670)
- 百度站长链接实时提交工具V1.0
- 统计学 回归分析( Regression Analysis)
- Amazing Slider(网页图片轮播制作)V6.2中文特别版
- 模拟链表
- HDU 1237 简单计算器
- C#接口
- ShareX(图片文件分享程序)V11.1.0中文版
- office 2010 密钥(office 2010永久的密钥)
- SpringMVC + Spring + MyBatis 学习笔记:提交数据遭遇基础类型和日期类型报400错误解决方法
- Interleaving String
- 三台主机分别部署LAMP
- 大规模的程序可能要注意的地方
- 常用命令1