USACO 2007 February Silver The Cow Lexicon /// DP oj24258
题目大意:
输入w,l; w是接下来的字典内的单词个数,l为目标字符串长度
输入目标字符串
接下来w行,输入字典内的各个单词
输出目标字符串最少删除多少个字母就能变成只由字典内的单词组成的字符串
6 10
browndcodw
cow
milk
white
black
brown
farmer
2
#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的更多相关文章
- USACO 2007 November Silver Best Cow Line /// oj21653
题目大意: 输入n 接下来n行字母 在队头和队尾中选出较小的放入新的队列 Sample Input 6ACDBCB Sample Output ABCBCD 注意相同的情况 先判断内层的大小 输出 ...
- poj3267--The Cow Lexicon(dp:字符串组合)
The Cow Lexicon Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8211 Accepted: 3864 D ...
- POJ3267 The Cow Lexicon(DP+删词)
The Cow Lexicon Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9041 Accepted: 4293 D ...
- POJ 3267-The Cow Lexicon(DP)
The Cow Lexicon Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8252 Accepted: 3888 D ...
- 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 ...
- The Cow Lexicon(dp)
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7290 Accepted: 3409 Description Few k ...
- POJ3267 The Cow Lexicon(dp)
题目链接. 分析: dp[i]表示母串从第i位起始的后缀所对应的最少去掉字母数. dp[i] = min(dp[i+res]+res-strlen(pa[j])); 其中res 为从第 i 位开始匹配 ...
- BZOJ1915[USACO 2010 Open Gold 1.Cow Hopscotch]——DP+斜率优化
题目描述 奶牛们正在回味童年,玩一个类似跳格子的游戏,在这个游戏里,奶牛们在草地上画了一行N个格子,(3 <=N <= 250,000),编号为1..N.就像任何一个好游戏一样,这样的跳格 ...
- [USACO 2012 Jan Silver] Bale Share【DP】
传送门:http://www.usaco.org/index.php?page=viewproblem2&cpid=107 没想到太不应该了,真的不应该啊! f[i][j][k]表示前i个包, ...
随机推荐
- awk 一 文本处理工具
简介 awk 是逐行扫描文件(从第1行到最后一行),寻找含有目标文本的行: 如果匹配成功,则会在该行上执行用户想要的操作. 反之,则不对行做任何处理. awk 命令的基本格式为: awk [选项] ' ...
- 官网下载 Linux 上需要的 MySQL的步骤
1.输入MySQL 官网地址 https://dev.mysql.com/ 选择 download ->Community->MySQL Community Server 点击 MyS ...
- selenium 显示等待、隐式等待、强制等待
如今大部分web程序使用Ajax技术,当浏览器加载页面时,页面元素可能不是同时加载完成,如果因为加载某个元素超时导致ElementNotVisibleException的情况出现,自动化脚本的稳定性就 ...
- 阿里巴巴持续投入,etcd 正式加入 CNCF
摘要: 2018 年 12 月 11 日,在 KubeCon + CloudNativeCon 北美峰会上,etcd 项目正式加入 CNCF. 2018 年 12 月 11 日,在 KubeCon + ...
- bzoj1024题解
[解题思路] 爆搜,状态f(r,x,y)表示剩下r刀,边长为x和y,对于每个状态枚举切成两块后的长度比或宽度比.复杂度o((n/2)n). [参考代码] #include <algorithm& ...
- CUDA并行计算 | 线程模型与内存模型
文章目录 前言 CUDA线程模型(如何组织线程) CUDA内存模型(了解不同内存优缺点,合理使用) 前言 CUDA(Compute Unified Device Architecture)是显卡厂 ...
- C++ string的大小写转换【转载】
转载自https://www.cnblogs.com/balingybj/p/4678850.html 将一个string转换成大写或者小写,是项目中经常需要做的事情,但string类里并 没有提供这 ...
- Java-Class-@I:org.springframework.web.bind.annotation.RequestMapping
ylbtech-Java-Class-@I:org.springframework.web.bind.annotation.RequestMapping 1.返回顶部 2.返回顶部 1. pack ...
- <router-link :to="...">
一.<router-link :to="..."> to里的值可以是一个字符串路径,或者一个描述地址的对象.例如: // 字符串<router-link to=& ...
- 3.2_springBoot2.1.x检索之JestClient操作ElasticSearch
这里介绍Jest方式交互, 导入jest版本 <!--导入jest--> <dependency> <groupId>io.searchbox</groupI ...