1 条题解
-
-1
50pt
的动态规划,
dp[i][j][0/1]
表示当前看到第 个位置,已经选了 个字母 A,上一个是字母 。转移的时候要枚举上一个位置 ,然后将 这一段全部弄成 A 或者 B。所以 是 的。100pt
首先对三条规则进行简单分析
- 对于规则 3 来说,假设 ,那么如果想要通过 AB 切换来获得价值,那字符串就应该形如 BBBABBBABBBA 这样,即每 3 个 B 就切换成 A。
- 对于规则 1.2 来说,把字母放在连续的一段地方,第一次产生价值需要 个 A 或者 个 B,第二次及以后产生价值只需要 个 A 或者 个 B
我们可以枚举 A 和 B 切换了多少次,假定我们切换的方式就是 BBBABBBABBBA,即每一段 A 的长度都为 1,我们又知道 AB 的切换次数,就可以知道现在已经用掉了几个 A,然后我们先考虑把 A 全部用完。
- 在 BBBABBBA 的形式前面 只需要花费一个 A 就可以拿到一个价值
- 然后将多余的 A 填充进字符串中,因为每一段 A 的长度都是 1,所以此时本质上是每多 个 A,答案 +1。
然后再考虑将剩余的 B 用完。
- 如果倒数第二个位置是 A 的话,那么最后一个只需要花费一个 B 就能拿到一个价值
- 例如 ,本来我们填充的是 BBBABBBABBBA,根据规则 2,当一段 B 的长度达到 5 的时候又可以使得价值 +1,所以我们尽量将每一段 B 都填充到长度为 5。如果全部填充好了且还有多余的 B,那么每多 个 B,答案 +1。
- 1
信息
- ID
- 1661
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 9
- 已通过
- 1
- 上传者