BZOJ4145: [AMPPZ2014]The Prices

来源:互联网 发布:java计算器布局 编辑:程序博客网 时间:2024/06/11 10:36

BZOJ4145: [AMPPZ2014]The Prices

状压Dp

题解:

http://www.cnblogs.com/gromah/p/4592207.html

我们考虑设立状态Dp[i][s]表示考虑了前i个商店后,购买状态为s的最小花费。

转移的话就枚举每个商店i,首先令:

Dp[i][s]=Dp[i1][s]+D[i]

这个过程表示到达这个商店。

然后枚举每个状态s,然后枚举每个不在s里的物品j,令:

Dp[i][s+j]=min(Dp[i][s+j],Dp[i][s]+Cost[i][j])

这个过程就相当于是进行了一次 01 背包。

最后还要令Dp[i][s]=min(Dp[i][s],Dp[i1][s]),看看在商店i时的购买计划是否划算。

令全集是S,那么最后答案就是Dp[n][S] 了。

时间复杂度O(nm2m),空间复杂度O(n2m)

原创粉丝点击