题意:给出一串单词,每个有一个权值.顺序不变的情况下,删掉一些,使得相邻两单词,前一个是后一个的子串.同时要求使得剩余单词权值和最大.求最大是多少. 分析: AC自动机+线段树+DP. 这是一个比较复杂的题目,我们分步来讲解. 第一部分,动态规划. 用f[i]表示从第1个单词,到第i个单词,所有剩余单词中包含第i个的情况中最大权值和是多少. f[i]=max(f[v]+weight[i]),要求第v个单词是第i个单词的子串且v<i. 第二部分,利用AC自动机求所有子串. fail指针就是找后缀,…