poj 3461 Oulipo
来源:互联网 发布:本机端口号查询 编辑:程序博客网 时间:2024/05/16 17:51
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
3BAPCBAPCAZAAZAZAZAVERDIAVERDXIVYERDIAN
Sample Output
130
解题思路:kmp算法
#include<string.h>#include<stdio.h>char str[1000010],s[10010];int nextval[10010];int m,n;void get_nextval(){int i=0,j=-1;nextval[i]=j;while(i<m){if(j==-1||(s[i]==s[j])) { i++; j++; if(s[i]!=s[j]) nextval[i]=j;//优化next数组 else nextval[i]=nextval[j]; }else j=nextval[j];}}int kmp(){int ant=0;int i=0,j=0;get_nextval();while(i<n){if(j==-1||(str[i]==s[j])){i++;j++;if(j==m) ant++;}else j=nextval[j];}return ant;} int main(){int T;scanf("%d",&T);while(T--){int count=0;scanf("%s%s",s,str);m=strlen(s);n=strlen(str);memset(nextval,0,sizeof(nextval));count=kmp();printf("%d\n",count);}return 0;}
- POJ 3461 Oulipo
- POJ-3461 Oulipo
- poj 3461 Oulipo
- poj 3461 Oulipo(KMP)
- poj 3461 Oulipo
- POJ-3461-Oulipo
- POJ 3461 Oulipo(KMP)
- POJ 3461 Oulipo
- POJ 3461 Oulipo
- POJ 3461 Oulipo
- POJ 3461 Oulipo---kmp
- POJ 3461 Oulipo KMP
- poj-Oulipo -3461
- POJ 3461 Oulipo
- POJ 3461 Oulipo
- POJ 3461 Oulipo
- poj 3461 Oulipo
- poj 3461 Oulipo
- LeetCode题解——Basic Calculator
- 多线程
- 安卓常用权限
- 【线性代数公开课MIT Linear Algebra】 第十七课 正交基和正交矩阵
- Http和Https简介
- poj 3461 Oulipo
- Struts2和Spring的mvc的区别
- LightOJ 1297 - Largest Box (二分查找)
- hdu5510 kmp+二分
- [004]微信公众账号开发教程第1篇-根据用户openID获取用户基本信息
- PHP与JavaScript在处理数组方面的不同之处
- [Unity热更新]lua基础(一)
- poj 2752 Seek the Name, Seek the Fame
- 如何解决ArcGIS Runtime SDK for Android中文标注无法显示的问题