是的gasdgadgdaghewgawe

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int main(){
    //hdu4117
}

/*
    给定n个字符串,要求按顺序取一些字符串,满足后一个字符串是前一个字符串的子串,要求使得取出的权值和最大。
    dp[i]=max{ dp[j] }+w[i] (j∈i)
    建立AC自动机
    (1)
        因为对于一个点,它沿Trie的边走的是他的前缀,沿Fail走的是他的后缀
        于是可以枚举所有前缀的所有后缀/所有后缀的所有前缀
        O(n^2)
    (2)
        g[i]表示i所有前缀中dp值的最大值,于是可以对于每个节点枚举所有后缀的g[i]最大值
        更加优越的O(n^2)
    (3)
        对于(2)搞一个树链剖分
        O(nlogn)
*/

原文地址:https://www.cnblogs.com/Kong-Ruo/p/8228231.html

时间: 2024-11-05 16:09:16

是的gasdgadgdaghewgawe的相关文章