E. Cool Slogans 链接 题意: 给定一个字符串S,从中选出k个子串a[1],a[2]...a[k],满足a[i]在a[i+1]中出现了两次(可以重叠),求最大的k. 分析: 建出SAM,在parent树上dp,dp[i]表示到第i个点,最多选了多少个子串,那么如果fa[i]在i中出现了两次,就可以+1后转移,否则直接继承fa[i]的值即可. 那么如何判断一个串是否在另一个串中出现了两次? 后缀自动机上每个点表示多个串,如果点A对应的串在点B对应的串中出现了两次,那么设B的结尾节点是…