标签:组合 枚举 5* 假设 魔术 前缀 就是 预处理 重复
对于每个点 u向v建边
如果T=1的情况 那么就建双向边
然后去合法的情况一定是把所有边都走了一遍
也就是求图的欧拉路径
特判几种无解的情况就可以了
原串为s1 喜欢的串为s2
假设s1长度len1 s2长度len2
所有方案一定是\(26^len1\)
考虑计算合法的串的种类
那么合法的原串一定满足 s1的前缀是s2的一段前缀 s1的后缀是s2的另外一部分
可以考虑枚举这个前缀的长度
那么首先前缀长度为len2的时候 答案为\(26^(len1-len2)\)
当前缀长度为len2-1时 答案也为\(26^(len1-len2)\)
但是发现会有重复 所以强制此时移走那一位不为原先的字符 那么贡献变成了\(25*26^(len1-len2-1)\)
以此类推 发现除了第一次每一次的贡献其实都是一样的
然后就可以表示出合法串的数量了 冲个快速幂就可以了
原题 货车运输
但是考试的时候没想到
总觉得是可持久化并查集预处理之后 二分答案
然后就挂掉了
建最小生成树 然后倍增找答案就好了
标签:组合 枚举 5* 假设 魔术 前缀 就是 预处理 重复
原文地址:https://www.cnblogs.com/2004-08-20/p/14027036.html