其他分享
首页 > 其他分享> > 【十二省联考 2019】字符串问题

【十二省联考 2019】字符串问题

作者:互联网

以前写完题后鸽了博客,现在补一下。

题意

  给定字符串 \(s\),然后给定 \(n_a\) 个 \(A\) 类区间和 \(n_b\) 个 \(B\) 类区间,再给定 \(m\) 条从第一类区间连向第二类区间的边,一个第二类区间要连向一个第一类区间 当且仅当前者是后者的前缀。每个第一类区间的权值是区间长度,求这张图上的最长路(无限长则输出 \(-1\))。
  \(n_a,n_b,|s|,m\le 2\times 10^5\)

题解

  如果图直接给你,那这就是个普及组的拓扑求最长路了,若有一个点能回到自己就输出 \(-1\),否则拓扑排序递推出最长路。
  然而这道题不直接给你图,但建出来图后就变成了上面的普及组问题了。下面考虑怎么建图。
  第一类区间连向第二类区间的边已经给你了,在 SAM 上给对应的两点连边就醒了。
  第二类区间连向第一类区间怎么处理?不难发现

标签:第二类,连向,最长,区间,给定,2019,字符串,第一类,联考
来源: https://www.cnblogs.com/scx2015noip-as-php/p/11311462.html