【题解】ABC301F | 计数
不需要 dp,。
枚举出现的第一个 DD 的位置。并计算后面没有 oS 的方案数。
如果我们钦定 DD 后面的 D 出现在 位置,我们只需要知道前面“?” 的个数 和 大写字母的个数,就可以算出。前面 不出现重复的大写字母,且出现过一个 和这个字母相同的字母的方案数。
形如
表示“?” 个数, 表示已经出现的大写字母种类数。
如果要钦定之前出现过某一种字符的话减去 没有出现过就行。
注意我们只区分这个“?” 代表的字母之前是否出现过,所以不用枚举字母,只需要知道前面出现过和没出现过的字母个数。
那么没有出现 oS 的怎么算呢?
一个字符串没有 oS 子序列那么它一定形如 ,即一段前缀 S 和一段后缀 o。
又因为大写字母和小写字母的种类数是相同的,也就是说对于不同的分界点来说,可行的选择数是相同的,均为 种,所以只用考虑合法的分界点数,即 DD 后的最后一个 S 到第一个 O 之间的位置。
最后再加上整个串没有 DD 的方案数就行了。
本文已经结束了。本文作者:ღꦿ࿐(DeepSea),转载请注明原文链接:https://www.cnblogs.com/Dreamerkk/p/17971006,谢谢你的阅读或转载!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步