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

Solution

一开始没啥想法就打了一个搜索,复杂度$O$(期望能过),结果T的很稳

想了想其他做法发现其实可以直接$dp$维护字典序最小

$string$都不会用了...QAQ

#include <bits/stdc++.h>

using namespace std ;

int L , n ;
char s[ ] , ans[ ] ;
string a[ ] ;
string f[ ] ;
int len[ ] ; bool check( int x , int t ) {
for( int i = ; i < len[ t ] ; i ++ ) {
if( a[ t ][ i ] != s[ x + i ] && s[ x + i ] != '?' ) return ;
}
return ;
} int main() {
scanf( "%d%d" , &L , &n ) ;
scanf( "%s" , s + ) ;
for( int i = ; i <= n ; i ++ ) {
cin >> a[ i ] ;
len[ i ] = a[ i ].length() ;
}
for( int i = ; i <= L ; i ++ ) {
for( int j = ; j <= n ; j ++ ) {
int t = i - len[ j ] ;
if( t < ) continue ;
if( t && f[ t ] == "" ) continue ;
if( check( t + , j ) ) {
if( f[ i ] == "" || f[ i ] > f[ t ] + a[ j ] )
f[ i ] = f[ t ] + a[ j ] ;
}
}
}
cout << f[ L ] << endl ;
return ;
}

BZOJ3297: [USACO2011 Open]forgot DP+字符串的更多相关文章

  1. bzoj3297[USACO2011 Open]forgot(dp + string)

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

  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. Codeforces 176B (线性DP+字符串)

    题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28214 题目大意:源串有如下变形:每次将串切为两半,位置颠倒形成 ...

  8. Codeforces Round #367 (Div. 2) A B C 暴力 二分 dp(字符串的反转)

    A. Beru-taxi time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  9. HDU 2089 数位dp/字符串处理 两种方法

    不要62 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

随机推荐

  1. mysql获取下一篇和上一篇文章的ID

    mysql获取上一篇和下一篇文章的ID只要在当前页面读取上一个和下一个的ID就可以了.假设当前ID为10:搜索上一个的ID:select  id  from table where id<10 ...

  2. dedecms调用副栏目文章怎么操作

    最近ytkah的网站进行改版,添加了一些新栏目,做更精准的着陆页,有些文章比较简短并且很早以前就发布过了,如果再添加这样的文档就有点重复了,于是就想着用文章副栏目的属性,可却调不出来,怎么办?查找官方 ...

  3. 高性能MySQL中的三星索引

    高性能MySQL中的三星索引 我对此提出了深深的疑问: 一星:相关的记录指的是什么??(相关这个词很深奥,“相关部门”是什么部门) 二星:如果建立了B-Tree(B+Tree)索引,数据就有序了.三星 ...

  4. lua的文件管理

    lua没有自己的文件管理 只有读取和写入文件,但是可以通过调用lfs(LuaFileSystem),lfs是一个 用于lua进行文件访问的库,支持lua5.1和lua5.2,并且跨平台 lfs的使用: ...

  5. 单利模式及python实现方式

    单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...

  6. http协议基础(八)请求首部字段

    请求首部字段 定义:请求首部字段是从客户端到服务器发送请求报文中所使用的字段,里面包含了附加信息.客户端信息以及对响应内容相关的优先级等内容 1.Accept 通知服务器用户代理可处理的媒体类型及媒体 ...

  7. 圆锥体完全均衡下重力异常正演 [MATLAB]

    在完全均衡的模型下,若地表有一圆锥体(山峰等),计算跨越山顶的截面上所得到的各种重力异常. 地壳密度 $kg\cdot m^{-3}$ 上地幔密度 $g\cdot cm^{-3}$ 地表地形圆锥体半径 ...

  8. js值类型和引用类型的区别

    1:赋值 值类型的赋值:直接将存储的数据赋值一份进行赋值,两份数据在内存中是完全独立的. 引用类型赋值:引用类型的赋值的时候,是将变量中的存储的地址赋值一份单独存储,但是两个变量中修改其中一个对象,另 ...

  9. mysql主从延迟(摘自http://www.linuxidc.com/Linux/2012-02/53995.htm)

    http://www.linuxidc.com/Linux/2012-02/53995.htm

  10. javascript的Object对象的defineProperty和defineProperties

    Object的属性 查看官网:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Obje ...