题目大意: 给你两个字符串a和b,从中分别取出子串x和y,求不同的x+y的个数. 思路: 对于每一个字符串,构建SAM. 为了保证相同的x+y不会被重复统计,我们可以想办法只统计相同的x+y中x最长的一种情况. 考虑在SAM上DP. 用DFS对a的SAM进行遍历,若当前遍历到的串x不能加上字符c时,在b的SAM中寻找以c开头的y,显然对于这样的x+y,x一定是最长的. 然后用G++交到HDU上发现TLE了. 觉得是自己DFS哪里死循环了,未果. 感觉是被卡常数,用C++交了一发,WA. 觉得自己…