BZOJ 4145 浅谈状态压缩动态规划背包问题

本文探讨如何利用状态压缩动态规划解决背包问题,特别是当物品数量较少时,通过位运算进行状态表示。通过对每个商店的去留和每个物品的购买决策进行详细分析,阐述了如何进行状态转移并实现最小花费的计算。文章最后给出了完整的代码实现。

这里写图片描述
世界真的很大
状态压缩DP算是我的一大弱点了
其实大概就是在普通的DP过程中,发现转移时会涉及到许多的状态,比如n件不同的物品买了那几件等等,而状态的每一项都是yes or no的关系,就可以用二进制的方法维护起来
其实能这样做得根本原因就是因为计算机本身和二进制有很大关系吧,支持许多位运算的操作,使得01串表示状态成为可能
但是由于int等的限制,这样的状态元素个数往往有限
所以看到元素个数比较小的时候可以考虑状态压缩了,这样
看题先:
description

你要购买m种物品各一件,一共有n家商店,你到第i家商店的路费为d[i],在第i家商店购买第j种物品的费用为c[i][j], 
求最小总费用。

input

第一行包含两个正整数n,m(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值