C-Cut cloth HDU2087 (kmp finds substrings, And the substrings cannot overlap)
C-cut fabric strips
Time Limit: 1000 MS Memory Limit: 32768KB 64bit IO Format: % I64d & % I64u
Submit Status
Description
There are some patterns in a fabric, and some other small ornaments that can be used directly. For the given flower cloth and small ornaments, how many small ornaments can be cut out from the flower cloth as much as possible?
Input
The input contains some data, such as a pair of fabric and decoration. The fabric is represented by visible ASCII characters and the number of visible ASCII characters, how many patterns are there in the cloth pattern. The length of the pattern and ornament cannot exceed 1000 characters. If the # character is met, the job will not be started.
Output
The maximum number of small ornaments that can be cut out from the pattern cloth. If none of the ornaments exist, 0 will be output honestly, with a line break between each result.
Sample Input
Abcde a3
Aaaaaa
#
Sample Output
0
3
#include
#include#include
#include
#include
//#include
using namespace std;template
inline T read(T&x){ char c; while((c=getchar())<=32)if(c==EOF)return 0; bool ok=false; if(c=='-')ok=true,c=getchar(); for(x=0; c>32; c=getchar()) x=x*10+c-'0'; if(ok)x=-x; return 1;}template
inline T read_(T&x,T&y){ return read(x)&&read(y);}template
inline T read__(T&x,T&y,T&z){ return read(x)&&read(y)&&read(z);}template
inline void write(T x){ if(x<0)putchar('-'),x=-x; if(x<10)putchar(x+'0'); else write(x/10),putchar(x%10+'0');}template
inline void writeln(T x){ write(x); putchar('\n');}//-------ZCC IO template------const int maxn=1000001;const double inf=999999999;#define lson (rt<<1),L,M#define rson (rt<<1|1),M+1,R#define M ((L+R)>>1)#define For(i,t,n) for(int i=(t);i<(n);i++)typedef long long LL;typedef double DB;typedef pair
P;#define bug printf("---\n");#define mod 1000000007int next[maxn];char a[maxn],b[maxn];void getnext(char*s){ int i=0,j=-1; next[0]=-1; int len=strlen(s); while(i