cf#342-B - War of the Corporations

http://codeforces.com/contest/625/problem/B

题意:给出s子串

和t子串


求 s子串要替换多少个字符为#才能使得 在s里面完全找不到t

直接kmp找出所有的 不重复子串个数即可



裸的kmp啦。。

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
#define lson l , m , rt << 1
#define rson m + 1 , r , rt << 1 | 1
const __int64 inf=2147483647;
const double pi=acos(-1.0);
double eps=0.000001;
__int64 min(__int64 a,__int64 b)
{return alen_t)
		return i-len_t;
	else
		return 0;
	
}


char tm[maxn];
char nm[500];

int main( )
{
 
		
		scanf("%s",tm+1);  
		scanf("%s",nm+1); 
int n=strlen(tm+1);
int m=strlen(nm+1);
		get_next(nm,m);
	int cun=0;
	int st=0;
		while(1)
		{
			int ret=	kmp(tm+st,nm,n,m);
			if (!ret) break;
			else
			{
				cun++;
				st+=ret+m-1;
			}
		}
		printf("%d\n",cun);
		
		 
	
	
	
	
	return 0;
} 


你可能感兴趣的:(CF,字符串,KMP算法)