sam
Ada Chambers
在ICPC的泥潭中苦苦挣扎。。。
展开
-
hihocoder1457【后缀自动机+拓扑排序DP】
题目链接 http://hihocoder.com/problemset/problem/1457 题解 所有乐章,用#隔开拼接起来建立sam。在自动机上按照拓扑序递推求出初始状态到当前点的不含#的路径数,然后用这个递推出初始到当前点所有子串的和。递推式见代码。 注意 我开始直接入度和递推都忽略自动机的#边。但这是不对的。因为这样忽略会导致有的点入度永远不是0,而不被算到。因为去掉#边可能导致某个入度和初始状态失去连接路径。所以拓扑就老老实实算上所有边弄,dp在忽略#边才对。 AC代码 #include&l原创 2020-08-15 12:12:37 · 262 阅读 · 0 评论 -
洛谷P3975【天津省选2015】(后缀自动机DP)
题目链接 https://www.luogu.com.cn/problem/P3975 题解 此题非常经典且重要,是sam的函谷关,必须拿下。 记录每个点endpos大小的方法是在parent树从下往上递推。开始的is_pre就是看看当前点与没有包含原串前缀,有的话,这个会在parent tree分叉时候丢掉。也就是当前节点并不是所有子节点的endpos的并集,并集还得加上那个前缀的结束位置才是当前点的endpos集合。 求endpos大小的dp非常经典。 dp数组表示从某个点出发沿自动机往下走的子串有多原创 2020-08-15 10:01:52 · 264 阅读 · 0 评论