BZOJ4145: [AMPPZ2014]The Prices

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值