背包
是羊驼鸭
这个作者很懒,什么都没留下…
展开
-
hdu3092 Least common multiple (数学+完全背包)
题目链接:点击这里题目大意:给定一个整数 nnn ,将其拆分成一些数的和,求出这些数的最小公倍数的最大值模 mmm 的值题目分析:因为是将 nnn 进行拆分,并对拆分方案求最值,我们考虑背包建模,将 nnn 理解为背包容量,数字理解为物品显然在这些数互质的时候,最小公倍数最大,所以物品就是一组组的素数的幂次,每次从一组中选出一个素数的幂次来进行更新答案(分组背包)因为答案会很大,而取余之后又难以辨别状态间的大小关系,所以我们对 dpdpdp 数字直接整体取对数,然后进行状态转移,对于答案我们单独原创 2021-04-14 20:18:56 · 105 阅读 · 0 评论 -
P2340 [USACO03FALL]Cow Exhibition G (类背包dp)
题目链接:点击这里题目大意:给定 nnn 个物品,每个物品有两个属性 si,fis_i,f_isi,fi ,现在希望选出一些物品求在 ∑si≥0\sum s_i\ge0∑si≥0,∑fi≥0\sum f_i\ge 0∑fi≥0 的情况下 ∑si+∑fi\sum s_i+\sum f_i∑si+∑fi 的最大值题目分析:对于两个值相关值的最优化可以考虑背包 dpdpdp ,把一个值当成容量,另一个值当成价值因此设计状态为 dp[∑si]dp[\sum s_i]dp[∑si] 表示 ∑s原创 2021-01-17 20:16:03 · 338 阅读 · 1 评论 -
P1941 飞扬的小鸟(类背包dp)
题目链接:点击这里题目大意:有一个长为 nnn ,高为 mmm 的二维平面,上面有 kkk 个管道(管道是有一个缺口的竖线,角色只能从其缺口通过),角色每秒会向右走一个单位,到达最右边游戏结束,每秒可多次点击屏幕,每次点击屏幕会让角色向上移 xix_ixi ,不点击屏幕会下降 yiy_iyi ,问能否到达最右边,若可以求最小点击次数,若不可求最多可通过多少个管道题目分析:这种二维平面上的 dpdpdp 容易想到一个状态: dp[i][j]dp[i][j]dp[i][j] 表示到达 (i,j)(i原创 2021-01-17 19:45:17 · 106 阅读 · 1 评论 -
CodeForces - 1459D Glass Half Spilled (类背包dp)
题目链接:点击这里题目大意:有 nnn 个水瓶,第 iii 个水瓶对应一个容量 aia_iai ,一个当前含水量 bib_ibi ,现在可以将水瓶 iii 的水转移到另一个水瓶 jjj 中,但在转移时会丢失 bi2\frac {b_i}{2}2bi 的水,且水瓶 jjj 中的水不会超过 aja_jaj ,现在要选出 kkk 个水瓶,让其任意倒水使这 kkk 个瓶子的总水量最大题目分析:感觉这题和背包很像设状态 dp[i][j][k]dp[i][j][k]dp[i][j][k] 表示前 i原创 2020-12-21 00:33:34 · 499 阅读 · 1 评论 -
多重背包及其优化
设有 nnn 件物品,背包容量为 mmm ,第 iii 件物品的体积为 viv_ivi ,价值为 viv_ivi ,数量为 sis_isi ,求背包所能容纳的最大价值朴素算法:点击链接直接用 010101 背包的朴素转移方程,时间复杂度为 O(nms)O(nms)O(nms) ,代码如下: for(int i = 1;i <= n;i++) for(int j = 1;j <= s[i];j++) for(int k = m;k >= v[i];k--) dp原创 2020-12-18 21:47:31 · 133 阅读 · 0 评论 -
2020ccpc 威海 Clock Master(分组背包)
题目大意:TTT 组数据,每组数据给出一个 nnn ,将 nnn 拆成任意多个整数相加,即 n=a1+a2+...+amn = a_1+a_2+...+a_mn=a1+a2+...+am ,求 max(lcm(a1,a2,...,am))max(lcm(a_1,a_2,...,a_m))max(lcm(a1,a2,...,am)) 对结果取以自然对数为底的对数题目分析:我们知道一个数nnn可通过质因数分解表示为n=p1cnt1∗p2cnt2∗...∗pxcntxn=p^{cnt_1}_1.原创 2020-10-26 22:38:10 · 449 阅读 · 2 评论 -
CodeForces 1437C Chef Monocarp (背包dp)
题目链接:[点击这里](https://vjudge.net/problem/CodeForces-1437C)题目大意:qqq 组数据,每组数据给出 nnn 个物品,第 iii 个物品在 tit_iti 时取出花费为 000 ,在其余时间取出花费是 abs(ti−ti′)abs(t_i-t^{'}_i)abs(ti−ti′) ,求 ∑i=1n(abs(ti−ti′))\sum_{i=1}^n(abs(ti-t^{'}_i))∑i=1n(abs(ti−ti′)) 的最小值题目分析:设状态原创 2020-10-29 14:53:06 · 332 阅读 · 0 评论