1. 题面
题目描述
AK 完了 IOI,CGZ 又向着 AK IBO 的目标出发。毕竟不是生竞选手,CGZ 被一道题难住了。
这道题是说,你若想编辑出一个基因 S(只含小写字符),第一步可以先去买下别人编辑好的 S 的一个前缀,若前缀长度为 L,则要花 x∗L万元。然后,你可以做以下两个操作:
1. 将手头的基因复制一遍黏在后面,花费 y万元。
2. 将手头的基因从某一处切开然后保留前缀,花费 z万元。
问编辑出 S 最少要花费多少万元?
输入格式
第一行一个字符串 S,保证只含小写字母
第二行三个整数 x,y,z
输出格式
一行一个整数,表示编辑出基因 S 的最少花费,单位:万元。
样例
输入样例 1
输出样例 1
输入样例 2
输出样例 2
数据范围与提示
1≤x,y,z≤10
|S|≤2∗105
2. 题解
比较简单的 DP 题
设 fi为构造出前缀 i的最小代价
设 zi为后缀 i与原串的最长公共前缀 LCP
有三种转移:
- 直接购买:fi=x×i
- 倍长:当 zi+1≥i时,有 f2i=fi+y
- 倍长后删除:当 fi+k=fi+y+z,(k∈[1,min(zi+1,i)])
三种转移取 min就行了
第三种转移用树状数组后缀最小维护
0 条评论