3297: [USACO2011 Open]forgot

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 137  Solved: 94
[Submit][Status][Discuss]

Description

发生了这么多,贝茜已经忘记了她cowtube密码。然而,她记得一些有用的信息。 
首先,她记得她的密码(记为变量P)长度为L(1 <= L<=1,000)字符串,并可以被分成 一个或多个词(不一定是唯一的),词来自于字典中NW(1<=NW<=1,000)个独特的词。 一个词W_i,被定义为一个长度1..20的小写字母序列('a'..'z')。 
她还记得她密码中某些字母的位置。 请看下面的例子。贝西知道她的密码看起来像"a??l?ban???????"('?'代表一个字母,她不记得), 
她的字典里有下面的词: 
apple 
cow 
farmer 
banana 
bananas 
pies 
贝西有两个可能的密码是的“applebananapies”和“applebananascow”。 
给你字典,贝西记得的字母,请找到她的密码。如果有一个以上的密码是可能的,找到字典序最前的。

Input

*第1行:两个空格分隔的整数:L和NW 
*第2行:一个字符串,长度为L:P 
*第3..N+2W行:第I+2行包含在字典中的第i个字:W_i

Output

*第1行:密码

Sample Input

15 6
a??l?ban???????
apple
cow
farmer
banana
bananas
pies

Sample Output

applebananapies

HINT

 

Source

Silver

/*
f[i]为前i长度时字典序最小的字符串。
状态转移方程显然是f[i]=min{f[i-len[j]]+a[j]}。
代码丑,得悟......
*/
#include<iostream>
#include<cstdio>
#include<cstring> #define N 1010 using namespace std;
char str[N],w[N][],ans[N];
int len[N];
string f[N],a[N]; bool judge(int i,int j)//判断方当前字符串行不行
{
for(int k=;k<=len[j];k++)
{
if(str[i-len[j]+k]!='?' && str[i-len[j]+k]!=w[j][k])
return ;
}
return ;
} int main()
{
int n,m,i,j;
scanf("%d%d%s",&n,&m,str+);
for(int i=;i<=m;i++) scanf("%s",w[i]+),len[i]=strlen(w[i]+),a[i]=w[i]+;
for(int i=;i<=n;i++) for(int j=;j<=m;j++)
{
if(len[j]<=i && (i-len[j]==||f[i-len[j]]!="") && judge(i , j) && (f[i]==""||f[i]>f[i-len[j]]+a[j]))
f[i]=f[i-len[j]]+a[j];
}
printf("%s\n" , f[n].c_str());
return ;
}

bzoj3297[USACO2011 Open]forgot(dp + string)的更多相关文章

  1. BZOJ3297: [USACO2011 Open]forgot DP+字符串

    Description 发生了这么多,贝茜已经忘记了她cowtube密码.然而,她记得一些有用的信息.首先,她记得她的密码(记为变 量P)长度为L(1 <= L<=1,000)字符串,并可 ...

  2. BZOJ3297: [USACO2011 Open]forgot

    3297: [USACO2011 Open]forgot Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 54  Solved: 38[Submit][ ...

  3. BZOJ3297: [USACO2011 Open]forgot(背包)

    3297: [USACO2011 Open]forgot Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 189  Solved: 126[Submit ...

  4. 3297: [USACO2011 Open]forgot

    3297: [USACO2011 Open]forgot Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 69  Solved: 51[Submit][ ...

  5. 【bzoj3297】[USACO2011 Open]forgot STL+dp

    题目描述 发生了这么多,贝茜已经忘记了她cowtube密码.然而,她记得一些有用的信息. 首先,她记得她的密码(记为变量P)长度为L(1 <= L<=1,000)字符串,并可以被分成 一个 ...

  6. 【BZOJ】3297: [USACO2011 Open]forgot(dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3297 这题拖了很久呢... 很久以前写了个dfs,,但是tle了..... 然后一直想dp想不出来, ...

  7. [一道区间dp][String painter]

    http://acm.hdu.edu.cn/showproblem.php?pid=2476 String painter Time Limit: 5000/2000 MS (Java/Others) ...

  8. HDU 2476 区间DP String painter

    题解 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm ...

  9. leetcode distinct-subsequences(DP)

    参考https://oj.leetcode.com/problems/distinct-subsequences 动态规划方程 dp[i][j]=dp[i-1][j-1]+dp[i-1][j] (s( ...

随机推荐

  1. 2016.01.05 DOM笔记(一) 查找元素

    DOM节点的种类 元素和标签是一个意思,例如<body>标签或者称为<body>元素 节点DOM的节点分为三类  元素节点,文本节点,属性节点 例如 <div id=‘b ...

  2. sublime之markdown快捷键

    目录 sublime 快捷键 markdown技能 sublime 快捷键 ctrl + shift + p 进入命令面板 package install 进入下载仓库 ctrl + alt + O ...

  3. spark的体系结构

    spark的体系结构 1.客户端(Driver Program) 需要构建一个对象,核心是sc(SparkContext) 以应用程序为例:链接本地 //new conf val conf=new S ...

  4. CAD处理键盘被按下事件(com接口VB语言)

    主要用到函数说明: MxDrawXCustomEvent::KeyDown 键盘被按下,详细说明如下: 参数 说明 LONG lVk 是按钮码,如F8,的值为#define VK_F8 0x77 返回 ...

  5. 20190625_mysql5.7查看及其解锁_被锁的表

    [root@localhost ~]# mysql -u myroot -pEnter password: mysql> show OPEN TABLES where In_use > 0 ...

  6. php第十八节课

    PDO 对不同的数据库连接使用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...

  7. PAT 1114 Family Property

    This time, you are supposed to help us collect the data for family-owned property. Given each person ...

  8. 【codeforces 797C】Minimal string

    [题目链接]:http://codeforces.com/contest/797/problem/C [题意] 一开始,给你一个字符串s:两个空字符串t和u; 你有两种合法操作; 1.将s的开头字符加 ...

  9. 【codeforces 767A】Snacktower

    [题目链接]:http://codeforces.com/contest/767/problem/A [题意] 每天掉一个盘子下来;盘子有大小从1..n依次增大n个盘子; 然后让你叠盘子; 最底层为n ...

  10. sgu 176 有源汇有上下界的最小流模板题

    /*参考博文:http://hi.baidu.com/dragon_eric123/item/82e259200ece744046996282 有上下界的有源最小流 */ #include<st ...