小A有一个由个小写字母组成的字符串。他希望将划分为若干个子串,使得子串中每个字母至多出现一次。
例如,对于字符串street来说,str + e + e + t是满足条件的划分;而s + tree + t不是,因为子串tree中e出现了两次。
额外地,小A还给出了价值,表示划分后长度为的子串价值为。小A希望最大化划分后得到的子串价值之和。你能帮他求出划分后子串价值之和的最大值吗?
第一行,一个正整数,表示字符串的长度。
第二行,一个包含个小写字母的字符串。
第三行,个正整数,表示不同长度的子串价值。
一行,一个整数,表示划分后子串价值之和的最大值。
输入:
6 street 2 1 7 4 3 3
输出:
13
输入:
8 blossoms 1 1 2 3 5 8 13 21
输出:
8
对于40%的测试点,保证。
对于所有测试点,保证,。
1.0 s
512.0 MB