zoukankan      html  css  js  c++  java
  • BZOJ 1633: [Usaco2007 Feb]The Cow Lexicon 牛的词典

    题目

    1633: [Usaco2007 Feb]The Cow Lexicon 牛的词典

    Time Limit: 5 Sec  Memory Limit: 64 MB
    Submit: 401  Solved: 216
    [Submit][Status]

    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一开始没想出来,写了一个O(n^3)的但是不太想写了。。。就去赫赫。。。。f[i]表示i个字符以前要删的字符个数,f[i]=min{f[i+1]+1, f[i+len[a]+t]+t} t为i开始后找到单词a要删的字母个数。。然后可以各种优化辣,从后往前推之类的!

    代码

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #include<string>
     5 using namespace std;
     6 int n,l,len[605],f[605];
     7 char str[605],ch[605][30];
     8 inline int cal(int x,int len,int y){
     9     int tot=0;
    10     int l1=x,l2=1;
    11     while(l1<=l){
    12         if(str[l1]==ch[y][l2])l2++;
    13         else tot++;
    14         if(l2==len+1)return tot;
    15         l1++;
    16     }
    17     return -1;
    18 }
    19 int main(){
    20     scanf("%d%d",&n,&l);
    21     scanf("%s",str+1);
    22     for(int i=1;i<=n;i++)
    23         scanf("%s",ch[i]+1);
    24     for(int i=l;i;i--){
    25         f[i]=f[i+1]+1;
    26         for(int j=1;j<=n;j++){
    27             int Len=strlen(ch[j]+1);
    28             int t=cal(i,Len,j);
    29             if(t!=-1)f[i]=min(f[i],f[i+Len+t]+t);
    30         }
    31     }
    32     printf("%d",f[1]);
    33     return 0;
    34 }
    View Code
  • 相关阅读:
    使用mui框架后,input标签失焦后,会滚到顶部的解决方案
    接口处理请求时间过长,前台响应“服务器超时”的解决办法
    正则匹配手机号码
    使用hexo+github免费搭建个人博客网站超详细教程
    微信小程序获取当前位置 地图定位导航-详细代码
    小程序 获取当前所在地理位置 城市 信息
    溯源:Cesium.Appearance 中的顶点着色器
    【Cesium 颜狗初步】fabric 材质定义与自定义着色器实践
    VM创建虚拟机报错
    zxing.net生成二维码的000026问题
  • 原文地址:https://www.cnblogs.com/WNJXYK/p/4070075.html
Copyright © 2011-2022 走看看