题解

cookiebus 2023-09-26 19:49:05 12 返回题目

简单DP

首先考虑一个暴力的dp

表示考虑了前种商品,第种商品买了个,前种商品一共花了元的方案数。

我们可以考虑约束一下

首先,必须得是的倍数,因为后面的商品价格都是级别了。

其次,必须大于等于,因为前种商品,每一个都至少买了个。

你可以写一个代码严格算一下,在的时候,严格运算次数是

具体的话,你可以图省事,用一个unordered_map来存有用的状态,无脑向前转移。

正解1

正解的话,考虑这样一个题意的转化:

你需要盖这么一共栋楼,第栋楼,每盖一层需要花元,现在从左到右,每栋楼都得比它右边的楼高,问:有多少种方案。

这就是典型的BELL数了,表示个符合条件的数字和为的方案数,转移就两种:以及两种。

正解2

考虑另一种题意转化:第一个物品块,第二个物品块,第三个物品块,...,这样就没有所谓的数量限制了。

直接完全背包即可。

{{ vote && vote.total.up }}