随笔分类 - 背包
摘要:题目传送门 观察数据a*2^b,转化成二进制后,后面跟了b位的0,可以转化为一个分层背包。 先预处理出每个物品是哪一层的,并放在同层内DP。 同层内直接背包,考虑层与层之间的DP。 第一维枚举层数,然后做类似于背包的DP,细节看code。 code:
阅读全文
摘要:题目传送门 看到M<=16经典状态压缩的数据范围,考虑题目。 一道类似于背包的题目。 设f[i][j]表示前i个商店,物品购买状态为j。 先将f[i][j]加上w[i](到i的路费),转移一次,在与同状态的前一商店取min就好了。 code:
阅读全文
摘要:题目传送门 背包的变形,不得不说卡了我很久(估计是下午睡傻了)。 设f[i][j]为前i个物品剩下j个挂钩。 f[i][j]=max(f[i-1][j],f[i-1][max(j-a[i].x,0)+1]); 显然f[i-1][j]表示不挂,而f[i-1][max(j-a[i].x,0)+1]表示挂
阅读全文
摘要:题目传送门 ·背包 这可以说是一道背包的变形。 首先需要考虑到的是如何将ta转换为一个正常 的背包。 这些数据有一个让我们都十分不爽的地方就是有两个值。 所以我们就设置一个基准值,将失败的经验值当做基准值,这样就只剩一个win-lose的“背包价值”了。 接下来即进行0-1背包操作 最后输出时将减去
阅读全文