• bzoj1633 [Usaco2007 Feb]The Cow Lexicon 牛的词典


    Description

    没有几个人知道,奶牛有她们自己的字典,里面的有W (1 ≤ W ≤ 600)个词,每个词的长度不超过25,且由小写字母组成.她们在交流时,由于各种原因,用词总是不那么准确.比如,贝茜听到有人对她说"browndcodw",确切的意思是"browncow",多出了两个"d",这两个"d"大概是身边的噪音. 奶牛们发觉辨认那些奇怪的信息很费劲,所以她们就想让你帮忙辨认一条收到的消息,即一个只包含小写字母且长度为L (2 ≤ L ≤ 300)的字符串.有些时候,这个字符串里会有多余的字母,你的任务就是找出最少去掉几个字母就可以使这个字符串变成准确的"牛语"(即奶牛字典中某些词的一个排列).

    Input

    第1行:两个用空格隔开的整数,W和L.

    第2行:一个长度为L的字符串,表示收到的信息. 第3行至第W+2行:奶牛的字典,每行一个词.

    Output

    唯一一行:一个整数,表示最少去掉几个字母就可以使之变成准确的"牛语".

     

    Sample Input

    6 10
    browndcodw
    cow
    milk
    white
    black
    brown
    farmer

    Sample Output

    2

    比较好想的dp(或者说从后往前递推)

    f[i]=min(f[i],f[+b[j].len+cost]+cost,f[i+1]+1)

    cost表示从i开始往后用第j个单词匹配要删掉多少个单词

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<cstdlib>
    #include<cmath>
    #include<algorithm>
    #include<ctime>
    #include<set>
    #define LL long long
    using namespace std;
    inline LL read()
    {
        int x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    char a[310],b[610][30];
    int f[310];
    int n,m;
    inline int getlast(int x,int y)
    {
    	int sum=0,l1=x,l2=1;
    	int l=strlen(b[y]+1);
    	while (l1<=m)
    	{
    		while (a[l1]!=b[y][l2]&&l1<=m)l1++,sum++;
    		if (l1>m)return -1;
    		if (l2==l)return sum;
    		l2++;
    		l1++;
    	}
    	return -1;
    }
    int main()
    {
    	scanf("%d %d",&n,&m);
    	scanf("%s",a+1);
    	for (int i=1;i<=n;i++)scanf("%s",b[i]+1);
    	for(int i=m;i;i--)
    	{
    		f[i]=f[i+1]+1;
    		for (int j=1;j<=n;j++)
    		  {
    		  	int cost=getlast(i,j);
    		  	int l=strlen(b[j]+1);
    		  	if (cost!=-1)f[i]=min(f[i+l+cost]+cost,f[i]);
    		  }
    	}
    	printf("%d
    ",f[1]);
    }
    

      

    ——by zhber,转载请注明来源
  • 相关阅读:
    利用GetCharWidth32获取字符串宽度
    活着,就一直在忙碌,从未有停歇。
    AutoMapper 创建嵌套对象映射(原创)
    停下,为了更好的前行---给自己画像
    iOS开发——真机调试证书—发布证书
    iOS开发——免证书调试(Xcode7,iOS9)
    iOS开发——常用字符串string相关方法和处理
    iOS开发——图文混排(CoreText—TextKit)
    iOS开发——语言适配——中文英文
    iOS开发——富文本——自定义字体
  • 原文地址:https://www.cnblogs.com/zhber/p/4035905.html
Copyright © 2020-2023  润新知