题目描述
译自 ROI 2016 Day2 T4. Тренажёр «102-пальцевый набор»
未来的机器人码农一定学过二指禅。为了帮助码农们精通二指禅,某打字软件推出了一种新的练习方法。
屏幕的上半部分会显示一个 m 位 01 串 S(01 串:只包含数字 0 和 1 的字符串)。下半部分会显示 n 个 01 串(称之为模式串),编号分别为 1…n。第 i 个模式串为 ci。每个模式串有一个费用 wi。模式串的总长度为 L。
你需要将 S 分成若干个子串,使得对于 S 的每个子串 Si,存在一个 j 满足:Si 是 cj 的前缀或后缀。
划分的总花费就是每个子串对应的模型的模式串之和。试求最小总花费。如果没有合法划分方案,则输出 -1
。
输入格式
m,n,L
S
wi,ci
9 2 8
000110100
1 100
1 11001
4
9 3 10
010110101
3 0101
10 011
2 100
8
3 1 3
100
1 101
-1
数据范围与提示
对于所有数据,1⩽m,n,L⩽300000;1⩽ci⩽109。
设 lmax 表示单个模式串的最大长度。
子任务 # |
分值 |
m |
n |
L |
ci |
lmax |
依赖子任务 |
1 |
20 |
m≤50 |
n≤50 |
L≤500 |
ci≤1000 |
lmax≤50 |
|
2 |
10 |
m≤5000 |
--- |
L≤5000 |
--- |
lmax≤1000 |
1 |
3 |
8 |
m≤10000 |
L≤50000 |
1, 2 |
4 |
8 |
m≤50000 |
lmax≤2000 |
1--3 |
5 |
10 |
n≤20 |
--- |
|
6 |
5 |
n≤200 |
5 |
7 |
9 |
--- |
ci=1 |
|
8 |
5 |
ci≤10 |
7 |
9 |
5 |
ci≤100 |
7, 8 |
10 |
5 |
--- |
1--9 |
11 |
5 |
m≤100000 |
L≤100000 |
1--10 |
12 |
5 |
m≤200000 |
L≤200000 |
1--11 |
13 |
5 |
m≤300000 |
L≤300000 |
1--12 |