zoukankan      html  css  js  c++  java
  • bzoj3075: [Usaco2013]Necklace

    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;
    }
    

      

  • 相关阅读:
    《JavaScript语言精粹》学习心得
    Linq笔记
    关于缓存
    JS-替换全部全部字符串
    相同数据用分号分割
    单例模式
    es6- ArrayBuffer
    vue常用属性解释。
    装饰者模式
    中介者模式
  • 原文地址:https://www.cnblogs.com/cutemush/p/12616560.html
Copyright © 2011-2022 走看看