题目大意:

输入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. windows常用

    host文件位置:C:\Windows\System32\drivers\etc

  2. 【Codeforces 1148B】Born This Way

    [链接] 我是链接,点我呀:) [题意] 有人要从A地飞向B地,然后从B地飞向C地. 给出A,B地的n.m个航班的出发时间. 已知从A到B的航班都是ta和tb时长到达B.C 只有到达B的时候航班还没起 ...

  3. NOIp2018集训test-9-21(am/pm)

    Am DAY1 抄代码 送分题 //Achen #include<bits/stdc++.h> #define For(i,a,b) for(int i=(a);i<=(b);i++ ...

  4. iOS Undefined symbols for architecture armv7:

    armv6 iPhone.iPhone 3G iPod 1G.iPod 2G armv7 iPhone 3GS.iPhone 4 iPod 3G.iPod 4G.iPod 5G iPad.iPad 2 ...

  5. detours学习

    最近学习detours3.0,总结下学习过程,给后来学习者一点参考,也便于自己以后复习 首先应该知道detours可以干什么,学习之前最好看一下detours文档,这个文档很简单,只有4篇文章,相对比 ...

  6. spring boot+vue.js发送post时一直415,swagger却很正常

    首先百度说要加header为applicaiton/json,加完后一直400,说json不符合格式,webstorm说要单引号,spring boot那边要双引号...... 后来不知道看了哪里说把 ...

  7. PAT_A1086#Tree Traversals Again

    Source: PAT A1086 Tree Traversals Again (25 分) Description: An inorder binary tree traversal can be ...

  8. A1095 Cars on Campus (30 分)

    Zhejiang University has 8 campuses and a lot of gates. From each gate we can collect the in/out time ...

  9. js对象属性值初始化封装函数

    在平常做项目的过程中,总是会遇到需要对一个已经定义过的对象的属性值进行初始化,且对象的属性值的类型有多种(string.number.array.object.boolean),为了方便自己就简单封装 ...

  10. spring @Transactional注解参数详解(13)

    事物注解方式: @Transactional 当标于类前时, 标示类中所有方法都进行事物处理 , 例子: 1 @Transactional public class TestServiceBean i ...