首页 > 其他 > 详细

bzoj3075: [Usaco2013]Necklace

时间:2020-04-02 00:05:32      阅读:69      评论:0      收藏:0      [点我收藏+]

https://blog.csdn.net/dreaming__ldx/article/details/88069272

https://blog.csdn.net/dingduan9147/article/details/101934455

#include<bits/stdc++.h>
#define ri register int
using namespace std;
const int N=10005,M=1005;
char s[N],t[M];
int tmp=0,ans=0,f[2][M],n,m,fail[M];
int main()
{
    scanf("%s%s",s+1,t+1),n=strlen(s+1),m=strlen(t+1);
    for(ri i=1,j=0;i<=m;++i)
	{
        while(j&&t[i+1]!=t[j+1])
		    j=fail[j];
        fail[i+1]=t[i+1]==t[j+1]?++j:0;
    }
    memset(f[tmp],-1,sizeof(f[tmp]));
    f[tmp][0]=0;
    for(ri i=1;i<=n;++i)
	{
        memset(f[tmp^1],-1,sizeof(f[tmp^1]));
        for(ri j=0,k;j<m;++j)if(~f[tmp][j])
		{
            f[tmp^1][j]=max(f[tmp^1][j],f[tmp][j]);
            k=j;
            while(k&&s[i]!=t[k+1])
			     k=fail[k];
            if(s[i]==t[k+1]) 
			     ++k;
            f[tmp^1][k]=max(f[tmp^1][k],f[tmp][j]+1);
        }
        tmp^=1;
    }
    for(ri i=0;i<m;++i)ans=max(ans,f[tmp][i]);
    cout<<n-ans;
    return 0;
}

  

bzoj3075: [Usaco2013]Necklace

原文:https://www.cnblogs.com/cutemush/p/12616560.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!