C - たんごたくさん Editorial

Time Limit: 5 sec / Memory Limit: 512 MB

配点 : 700700

問題文

文字列 SS と、要素数 MM の単語の集合 P={P1, P2, , PM}P=\{P_1,\ P_2,\ …,\ P_M\} が与えられます。単語 PiP_i は、整数の重み WiW_i を持っています。

文字列 SS から、PP に含まれる単語を重なり合わないように取り出すことを考えます。単語の重みの総和が最大値をとるように取り出すとき、その最大値はいくつでしょうか?

なお、同じ単語を複数回取り出した場合、それらの単語は別々に数えることとします。

制約

  • 1S2000001 \leq |S| \leq 200000
  • 1M50001 \leq M \leq 5000
  • 1Pi2001 \leq |P_i| \leq 200
  • 1Wi100001 \leq W_i \leq 10000
  • SS, PiP_i は英小文字からなる文字列である

入力

入力は以下の形式で標準入力から与えられる。

SS
MM
P1P_1
:
PMP_M
W1W_1
:
WMW_M

出力

単語の重みの総和の最大値を 11 行に出力せよ。


入力例 1Copy

Copy
abcabcabc
3
ab
bc
ca
1
1
1

出力例 1Copy

Copy
4

入力例 2Copy

Copy
abracadabra
4
b
abra
cad
rac
1
10
50
100

出力例 2Copy

Copy
111

入力例 3Copy

Copy
abcd
2
ad
bc
1192
794

出力例 3Copy

Copy
794


2025-04-04 (Fri)
06:36:00 +00:00