这道题不难想到这样的dp. dp[字符串si] = 以si为结尾的最大总权值. dp[si] = max(dp[sj]) ,1.j < i,2.sj是si的子串. 对于第二个条件,是一个多模版串匹配的问题,可以用AC自动机. 预先O(m)把AC自动机建好,然后动态更新AC自动机上的dp值, 匹配的时候,指向字符的指针移动总共是O(m), 而每个单词,fail指针走寻找后缀却是O(m),即使改成后缀链接也是O(n).too slow! 找到一个单词后,需要避免找后缀,动态维护这个单词的dp值. 一…