题解:AT_abc237_h [ABC237Ex] Hakata
一个经典结论,本质不同的回文子串只有
因此,可以暴力取出这些回文子串。如果存在子串关系,则连边。
显然图构成了一张 DAG。我们想要知道的就是 DAG 上的最长反链长度。
根据 Dilworth 定理,可以转化成 DAG 上最小链覆盖。
而最小链覆盖又可以转化为,对图拆点拆成二分图,原图连边
这个很好理解,每一个匹配相当于原图两个点绑一起了,少一个点。最后绑不动了,绑的一连串就是一条路径。
因此建出二分图后求最大匹配即可。
复杂度
有一说一,瓶颈在建图上,应该是可以拿字符串算法优化的。
另外如果使用匈牙利算法,存在一种很好写的不用拆点的做法。参见 https://atcoder.jp/contests/abc237/submissions/71443780。其实本质就是存边是