ColorfulBuilding

作者: 权大磊

关键字: 动态规划 前缀和优化

题目描述

现有 座房子排成一行, 编号为 的房子高度为 , 每座房子有一种颜色, 现给出两个字符串分别直接合并后得到 ,, 当且只当 并且 时认为 两座房子颜色相同, 现在从左往右看问有多少种房子的排列, 可以使人看到 种颜色变换

数据范围:

时间限制:

空间限制:

题解

很容易想到用动态规划来解决这一问题, 为方便考虑, 我们将题目想成从小到大来填 个空位, 定义 表示前 个数看到 种颜色 时合法的排列个数。 枚举上一次看到的数是 ,那么第 个数需要放在剩下的第一个空格处,否则后面更大的数放在这个空格时将会破坏原来的颜色变换,剩下 个数在 个空格中任意选, 所以 。 (特殊处理)

此时时间复杂度为 , 用前缀和优化一下即可降为

results matching ""

    No results matching ""