Codeforces Round #272 (Div. 1)C(字符串DP)
2015-12-29 19:10
274 查看
C. Dreamoon and Strings
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Dreamoon has a string s and a pattern string p. He
first removes exactly x characters from s obtaining
string s' as a result. Then he calculates
![](http://espresso.codeforces.com/1192a2998b54697e4a989e6f58ef5fbeb45cb351.png)
that
is defined as the maximal number of non-overlapping substrings equal to p that can be found in s'.
He wants to make this number as big as possible.
More formally, let's define
![](http://espresso.codeforces.com/795678a6a9498dc0226eefd698ff90929957a4e3.png)
as
maximum value of
![](http://espresso.codeforces.com/1192a2998b54697e4a989e6f58ef5fbeb45cb351.png)
over
all s' that can be obtained by removing exactly x characters
froms. Dreamoon wants to know
![](http://espresso.codeforces.com/795678a6a9498dc0226eefd698ff90929957a4e3.png)
for
all x from 0 to |s| where |s| denotes
the length of string s.
Input
The first line of the input contains the string s (1 ≤ |s| ≤ 2 000).
The second line of the input contains the string p (1 ≤ |p| ≤ 500).
Both strings will only consist of lower case English letters.
Output
Print |s| + 1 space-separated integers in a single line representing the
![](http://espresso.codeforces.com/795678a6a9498dc0226eefd698ff90929957a4e3.png)
for
all x from 0 to |s|.
Sample test(s)
input
output
input
output
题意:RT
思路:dp[i][j]表示s的前i个字符一共匹配了j个p串,删掉的最少字符数
先用一个数组en[i]预处理出在s串的每一个位置i。直到能最早匹配p串的结束的位置
转移为dp[ en[i+1] ][j+1]= min (dp[ en[i+1] ][j+1] 。dp[ i ][j] + (en[i+1]-i-m) )
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Dreamoon has a string s and a pattern string p. He
first removes exactly x characters from s obtaining
string s' as a result. Then he calculates
![](http://espresso.codeforces.com/1192a2998b54697e4a989e6f58ef5fbeb45cb351.png)
that
is defined as the maximal number of non-overlapping substrings equal to p that can be found in s'.
He wants to make this number as big as possible.
More formally, let's define
![](http://espresso.codeforces.com/795678a6a9498dc0226eefd698ff90929957a4e3.png)
as
maximum value of
![](http://espresso.codeforces.com/1192a2998b54697e4a989e6f58ef5fbeb45cb351.png)
over
all s' that can be obtained by removing exactly x characters
froms. Dreamoon wants to know
![](http://espresso.codeforces.com/795678a6a9498dc0226eefd698ff90929957a4e3.png)
for
all x from 0 to |s| where |s| denotes
the length of string s.
Input
The first line of the input contains the string s (1 ≤ |s| ≤ 2 000).
The second line of the input contains the string p (1 ≤ |p| ≤ 500).
Both strings will only consist of lower case English letters.
Output
Print |s| + 1 space-separated integers in a single line representing the
![](http://espresso.codeforces.com/795678a6a9498dc0226eefd698ff90929957a4e3.png)
for
all x from 0 to |s|.
Sample test(s)
input
aaaaa aa
output
2 2 1 1 0 0
input
axbaxxb ab
output
0 1 1 2 1 1 0 0
题意:RT
思路:dp[i][j]表示s的前i个字符一共匹配了j个p串,删掉的最少字符数
先用一个数组en[i]预处理出在s串的每一个位置i。直到能最早匹配p串的结束的位置
转移为dp[ en[i+1] ][j+1]= min (dp[ en[i+1] ][j+1] 。dp[ i ][j] + (en[i+1]-i-m) )
相关文章推荐
- 建造者模式
- About iOS总结
- java 集合(3) set 接口/ set 常用算法
- 超级 Ping 监测工具——为您的网络状态保驾护航
- 生活
- 【贪心】Bzoj 2457:[BeiJing2011]双端队列
- 为什么linux下要configure然后make make install?
- HttpClient的使用
- Angular中element具有的方法
- setup factory 设置自启动
- 项目的质量控制与质量保证的区别与联系
- ListView中单独更新某个Item的方法
- 哈佛图书馆自习室墙上的训言——觉得为时已晚的时候,恰恰是最早的时候——不是缺乏时间,而是缺乏努力(受益匪浅)
- python --subprocess 范例
- 如何区分分布式-集群-并行文件系统
- 《剑指offer》——寻找链表中倒数第k个结点
- Gson使用心得(一):Date的处理
- 恢复MySQL主从数据一致性的总结
- svn代码回滚(命令行)
- linux系统简单搭建iSCSI