3297: [USACO2011 Open]forgot

3297: [USACO2011 Open]forgot

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 69  Solved: 51
[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

题解:看了半天一直还在想着怎么套AC自动机,直到看到了N<=1000这个复杂度,于是感觉暴力DP都能过啦么么哒

 1 /**************************************************************
 2     Problem: 3297
 3     User: HansBug
 4     Language: Pascal
 5     Result: Accepted
 6     Time:1204 ms
 7     Memory:2832 kb
 8 ****************************************************************/
 9
10 var
11    i,j,k,l,m,n:longint;
12    a,b:array[0..2000] of ansistring;
13    s1:ansistring;
14 function check(x:longint;s2:ansistring):boolean;
15          var i:longint;
16          begin
17               for i:=1 to length(s2) do
18                   if (s1[x+i]<>‘?‘) and (s1[x+i]<>s2[i]) then exit(false);
19               exit(true);
20          end;
21 begin
22      readln(m,n);
23      readln(s1);
24      for i:=1 to n do readln(a[i]);
25      for i:=1 to m do
26          for j:=1 to n do
27              begin
28                   k:=i-length(a[j]);
29                   if (k<0) or ((k<>0) and (b[k]=‘‘)) then continue;
30                   if check(k,a[j]) then
31                      begin
32                           if (b[i]=‘‘) or (b[i]>(b[k]+a[j])) then b[i]:=b[k]+a[j];
33                           k:=0;
34                      end;
35              end;
36      writeln(b[m]);
37      readln;
38 end.    
时间: 2024-08-06 19:43:20

3297: [USACO2011 Open]forgot的相关文章

BZOJ3297: [USACO2011 Open]forgot

3297: [USACO2011 Open]forgot Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 54  Solved: 38[Submit][Status] Description 发生了这么多,贝茜已经忘记了她cowtube密码.然而,她记得一些有用的信息. 首先,她记得她的密码(记为变量P)长度为L(1 <= L<=1,000)字符串,并可以被分成 一个或多个词(不一定是唯一的),词来自于字典中NW(1<=NW<=1,0

bzoj3297[USACO2011 Open]forgot(dp + string)

3297: [USACO2011 Open]forgot Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 137  Solved: 94[Submit][Status][Discuss] Description 发生了这么多,贝茜已经忘记了她cowtube密码.然而,她记得一些有用的信息. 首先,她记得她的密码(记为变量P)长度为L(1 <= L<=1,000)字符串,并可以被分成 一个或多个词(不一定是唯一的),词来自于字典中NW(1<=

[BZOJ2442][Usaco2011 Open]修剪草坪

2442: [Usaco2011 Open]修剪草坪 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1053  Solved: 526 [Submit][Status][Discuss] Description 在一年前赢得了小镇的最佳草坪比赛后,FJ变得很懒,再也没有修剪过草坪.现在, 新一轮的最佳草坪比赛又开始了,FJ希望能够再次夺冠. 然而,FJ的草坪非常脏乱,因此,FJ只能够让他的奶牛来完成这项工作.FJ有N (1 <= N <= 1

3299: [USACO2011 Open]Corn Maze玉米迷宫

3299: [USACO2011 Open]Corn Maze玉米迷宫 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 137  Solved: 59[Submit][Status][Discuss] Description 今年秋天,约翰带着奶牛们去玩玉米迷宫.迷宫可分成NxM个格子,有些格子种了玉 米,种宥玉米的格子无法通行. 迷宫的四条边界上都是种了玉米的格子,其屮只有一个格子 没种,那就是出口. 在这个迷宫里,有一些神奇的传送点6每个传送点

3301: [USACO2011 Feb] Cow Line

3301: [USACO2011 Feb] Cow Line Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 82  Solved: 49[Submit][Status][Discuss] Description The N (1 <= N <= 20) cows conveniently numbered 1...N are playing yet another one of their crazy games with Farmer Joh

BZOJ3296: [USACO2011 Open] Learning Languages

3296: [USACO2011 Open] Learning Languages Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 81  Solved: 39[Submit][Status] Description 农夫约翰的N(2 <= N<=10,000)头奶牛,编号为1.. N,一共会流利地使用M(1<= M <=30,000)种语言,编号从1 .. M.,第i头,会说K_i(1 <= K_i<= M)种语言,即L_

【BZOJ】【3301】【USACO2011 Feb】Cow Line

康托展开 裸的康托展开&逆康托展开 康托展开就是一种特殊的hash,且是可逆的…… 序列->序号:(康托展开) 对于每个数a[i],数比它小的数有多少个在它之前没出现,记为b[i],$ans=1+\sum b[i]* (n-i)!$ 序号->序列:(逆康托展开) 求第x个排列所对应的序列,先将x-1,然后对于a[i],$\left\floor \frac{x}{(n-i)!} \right\floor $即为在它之后出现的比它小的数的个数,所以从小到大数一下有几个没出现的数,就知道a[

BZOJ3300: [USACO2011 Feb]Best Parenthesis

3300: [USACO2011 Feb]Best Parenthesis Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 89  Solved: 42[Submit][Status] Description Recently, the cows have been competing with strings of balanced parentheses and comparing them with each other to see who

STL(pair map set vector priority_queue) poj 3297

POJ 3297 算法竞赛初级杂烩包 题意:学生选课,没个学生只能选一门课.大写字符是课的名字,小写是人名.如果课程后面有多个相同名字算一个,如果一个人选多门课,则他选不上课,输出课和每门课选课人数 思路: map<string,set<int> > stu:一个学生名对应他选了哪几门课 map<string,ser<int> > pro:课程名对应有几个学生选了他,set存对应的学生 vector<pair<int,string> >