loj#P3067. 「ROI 2016 Day2」二指禅

「ROI 2016 Day2」二指禅

题目描述

译自 ROI 2016 Day2 T4. Тренажёр «102-пальцевый набор»

未来的机器人码农一定学过二指禅。为了帮助码农们精通二指禅,某打字软件推出了一种新的练习方法。

屏幕的上半部分会显示一个 mm 位 01 串 SS(01 串:只包含数字 0 和 1 的字符串)。下半部分会显示 nn 个 01 串(称之为模式串),编号分别为 1n1\ldots n。第 ii 个模式串为 cic_i。每个模式串有一个费用 wiw_i。模式串的总长度为 LL

你需要将 SS 分成若干个子串,使得对于 SS 的每个子串 SiS_i,存在一个 jj 满足:SiS_icjc_j 的前缀或后缀。

划分的总花费就是每个子串对应的模型的模式串之和。试求最小总花费。如果没有合法划分方案,则输出 -1

输入格式

m,n,Lm,n,L
SS
wi,ciw_i,c_i

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

数据范围与提示

对于所有数据,1m,n,L3000001 ⩽ m, n, L ⩽ 300\,0001ci1091 ⩽ c_i ⩽ 10^9

lmaxl_{max} 表示单个模式串的最大长度。

子任务 # 分值 mm nn LL cic_i lmaxl_{max} 依赖子任务
1 20 m50m \le 50 n50n \le 50 L500L \le 500 ci1000c_i \le 1000 lmax50l_{max} \le 50
2 10 m5000m \le 5000 --- L5000L \le 5000 --- lmax1000l_{max} \le 1000 1
3 8 m10000m \le 10\,000 L50000L \le 50\,000 1, 2
4  8  m50000m \le 50\,000 lmax2000l_{max} \le 2000 1--3
5 10 n20n \le 20 ---
6 5 n200n \le 200 5
7 9 --- ci=1c_i=1
8 5 ci10c_i\le 10 7
9  5  ci100c_i\le 100 7, 8
10 5 --- 1--9
11  5  m100000m \le 100\,000 L100000L \le 100\,000 1--10
12 5 m200000m \le 200\,000 L200000L \le 200\,000 1--11
13  5  m300000m \le 300\,000 L300000L \le 300\,000 1--12