摘要:
OJ题号: BZOJ4516 题目大意: 按顺序在一个序列的末尾插入数字,每次求出插入后能得到的本质不同的子串个数。 思路: 每次在SAM后加入这个数字,每次新出现的本质不同的子串个数就等于new_p->len-new_p->link->len。 由于数字范围比较大,可以考虑离散化或者map。 事实 阅读全文
摘要:
题目大意: 求多个字符串的LCS。 思路: 同SPOJ-LCS2,不过因为SPOJ上数据比较水,当时用错误的写法过掉了,这次用正确的写法重新过了一遍。 拓扑排序按照每个状态的len值,用计数排序实现。 每个状态往上更新时,应该对std::min(s[p].maxlen,s[q].len)取max(每 阅读全文
摘要:
题目大意: 给你一个字符串s,求出不同长度出现次数最多的字串的最大出现次数。 思路: 先对s构造后缀自动机,然后把s放进去匹配,每一个经过的结点表示一种长度的子串,用一个cnt记录能以每个状态表示的子串数量,然后按拓扑序DP。 注意拓扑序并不等同于在SAM中插入的次序,因为用new_q替代q的操作会 阅读全文