题目大意:

输入w,l; w是接下来的字典内的单词个数,l为目标字符串长度

输入目标字符串

接下来w行,输入字典内的各个单词

输出目标字符串最少删除多少个字母就能变成只由字典内的单词组成的字符串

Sample Input

6 10
browndcodw
cow
milk
white
black
brown
farmer

Sample Output

2

 
当输入为
2 6
reader
rad
reder
输出为
1
即单词不能相互覆盖 只能各自独立组合
#include <algorithm>
#include <cstring>
#include <stdio.h>
#include <string.h>
#include <cstdio>
#include <stdlib.h>
using namespace std;
int main()
{
int w,l;
while(~scanf("%d%d",&w,&l))
{
char ch[],dic[][];
scanf("%s",ch);
for(int i=;i<w;i++)
scanf("%s",dic[i]);
int dp[];
memset(dp,,sizeof(dp));
for(int i=;i<l;i++)
{ // 枚举结尾 再从各个单词尾部开始逐个向前对比
dp[i+]=dp[i]+;
for(int j=;j<w;j++) // 与字典中的各个单词对比
{
int len=strlen(dic[j]);
int p=i,q=len-; // p为主串的指向 q为当前字典单词的指向
while(p>=&&q>=) /// 向前推至 单词匹配完 或 到达主串的开头
{
if(dic[j][q]==ch[p])
q--,p--; // 若可匹配 指向p q均前移
else p--; // 若不可 则主串指向p前移
}
if(q<) dp[i+]=min(dp[i+],dp[p+]+i-p-len);
/// q<0 说明当前单词在主串具有匹配串 所以指向走到了0之前 /// i-p 为主串指向的移动长度 len 为单词长度
/// 差值 i-p-len 即为当前匹配串需删掉的字母个数 /* 两者取小
dp[i] + 1
前i位最少删除个数 + 删除当前位 dp[p+1] + i-p-len
(不含当前匹配串的)前p位最少删除个数 + (p之后的)当前匹配串中需删除个数 */ }
}
printf("%d\n",dp[l]);
} return ;
}

USACO 2007 February Silver The Cow Lexicon /// DP oj24258的更多相关文章

  1. USACO 2007 November Silver Best Cow Line /// oj21653

    题目大意: 输入n 接下来n行字母 在队头和队尾中选出较小的放入新的队列 Sample Input 6ACDBCB Sample Output ABCBCD   注意相同的情况 先判断内层的大小 输出 ...

  2. poj3267--The Cow Lexicon(dp:字符串组合)

    The Cow Lexicon Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8211   Accepted: 3864 D ...

  3. POJ3267 The Cow Lexicon(DP+删词)

    The Cow Lexicon Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9041   Accepted: 4293 D ...

  4. POJ 3267-The Cow Lexicon(DP)

    The Cow Lexicon Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8252   Accepted: 3888 D ...

  5. USACO 2011 February Silver Cow Line /// 康拓展开模板题 oj22713

    题目大意: 输入n k,1-n的排列,k次操作 操作P:输入一个m 输出第m个排列 操作Q:输入一个排列 输出它是第几个排列 Sample Input 5 2P3Q1 2 5 3 4 Sample O ...

  6. The Cow Lexicon(dp)

    Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7290   Accepted: 3409 Description Few k ...

  7. POJ3267 The Cow Lexicon(dp)

    题目链接. 分析: dp[i]表示母串从第i位起始的后缀所对应的最少去掉字母数. dp[i] = min(dp[i+res]+res-strlen(pa[j])); 其中res 为从第 i 位开始匹配 ...

  8. BZOJ1915[USACO 2010 Open Gold 1.Cow Hopscotch]——DP+斜率优化

    题目描述 奶牛们正在回味童年,玩一个类似跳格子的游戏,在这个游戏里,奶牛们在草地上画了一行N个格子,(3 <=N <= 250,000),编号为1..N.就像任何一个好游戏一样,这样的跳格 ...

  9. [USACO 2012 Jan Silver] Bale Share【DP】

    传送门:http://www.usaco.org/index.php?page=viewproblem2&cpid=107 没想到太不应该了,真的不应该啊! f[i][j][k]表示前i个包, ...

随机推荐

  1. 天猫精灵业务如何使用机器学习PAI进行模型推理优化

    引言 天猫精灵(TmallGenie)是阿里巴巴人工智能实验室(Alibaba A.I.Labs)于2017年7月5日发布的AI智能语音终端设备.天猫精灵目前是全球销量第三.中国销量第一的智能音箱品牌 ...

  2. DELPHI 让子窗体显示在任务栏上

    重载 CreateParams 方法即可 声明: procedure CreateParams(var Params: TCreateParams);override; procedure TForm ...

  3. Android中滑屏实现----触摸滑屏以及Scroller类详解 .

    转:http://blog.csdn.net/qinjuning/article/details/7419207 知识点一:  关于scrollTo()和scrollBy()以及偏移坐标的设置/取值问 ...

  4. 制作windows puppet openstack镜像

    由于电信需要远程部署软件,拟使用puppet进行远程服务管理 前提 windows系统已经安装 windows已经安装virtio driver 远程桌面开启,最好关闭防火墙 设置MTU 在没有安装c ...

  5. iOS开发UITouch触摸API简介

    1.UITouch简介 当用户触摸屏幕时,会创建一个UITouch对象: UITouch的作用保存着触摸相关的信息,比如触摸的位置.时间.阶段等: 当从开始到结束,系统会更新UITouch对象,结束时 ...

  6. spring boot 项目打成war,丢入tomcat独立运行

    小插曲:通过cmd运行startup.bat,cmd界面显示乱码 解决方法:进入tomcat目录,conf文件夹,用编辑器打开logging.properties 将java.util.logging ...

  7. DRF的请求响应组件

    目录 DRF的请求响应组件 请求模块(request) 概念 request源码简单分析 响应模块(response) 概念 使用方法 response源码简单分析: 解析模块(parse) 概念 使 ...

  8. IDEA与Tomcat的相关配置说明

    1.IDEA会为每个Tomcat部署的项目单独建立一份配置文件 查看控制台的log输出:Using CATAINA_BASE 2.工作空间项目和Tomcat部署的web项目 WEB-INF:内的资源不 ...

  9. note : Get FilePathName from FILE_OBJECT

    转自:http://blog.csdn.net/lostspeed/article/details/11738311 封了一个函数, 从 FILE_OBJECT 中 得到 FilePathName 在 ...

  10. 不会在CentOS 8上安装htop?今天教你正确安装

    它显示有关CPU和RAM利用率,正在执行的任务,平均负载和正常运行时间的信息.另外,htop显示所有正在运行的进程的列表,并且还可以树状格式显示这些进程. htop优于top的优势包括 以颜色标记输出 ...