专栏文章

来追梦笔记 RAM

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min4mrem
此快照首次捕获于
2025/12/01 20:29
3 个月前
此快照最后确认于
2025/12/01 20:29
3 个月前
查看原文

2025.11.26

P1164

dpi,jdp_{i,j} 表示前 ii 个物品恰好放满 jj 的方案数。
答案:dpn,mdp_{n,m}
初始化:dp0,0=1dp_{0,0}=1
转移:
CPP
for(int i=1;i<=n;i++){
    for(int j=0;j<=m;j++){
        dp[i][j]=dp[i-1][j]/*不选 j*/+dp[i-1][j-w[i]]/*选 j*/;
    }
}

应老师要求,添加“为什么这样就能做到恰好花完钱”。
因为我们的 dpi,jdp_{i,j} 在普通的 01 背包中那 jj 的钱是可用可不用的。(dp[i][j]=dp[i-1][j]),但是这里是必须塞满的,因为:
  • 这个菜 ii 不选,那么就是前 i1i-1 个菜花 jj 块钱。
  • 这个菜 ii 选,那么就是前 i1i-1 个菜花 jwij-w_i 块钱,然后第 ii 个菜花 wiw_i 块钱。
画个图吧。
普通的 01 背包是这样的:
PLAIN
0 0 0 0 0 - - -
    > 0 为用了,- 为没用
然而这种“计数”的 01 背包是这样的:
PLAIN
0 0 1 1 1 2 2 4
    > 数字为用了第几个

P1926

如果要刷题多就要做作业少。
做作业:最少时间,kk 分以上,“答案”使用精卫填海的求法。
刷题:重量为刷题时间,价值为 11,使用贪心或 dp。

ABC054D

状态:dpi,jdp_{i,j} 为 A 元素 ii 克,B 元素 jj 克的代价最小值。
答案:求满足 i÷j=Ma÷Mbi÷j = M_a÷M_bdpi,jdp_{i,j} 的最小值。
所有物品 A 元素和为第一个背包容量。
所有物品 B 元素和为第二个背包容量。

P1734

背包容量为 SS,物品是数值 ii,重量是 ii,价值是 ii 的因数和。
转化为 01 背包。

P2392

不同科目独立做,最后求和就行。
对于一门科目,所有题分配给左右脑的时间越接近越好。
两半脑的时间是有关系的,知道了一个半脑的,就知道了另一个半脑的。
所以可以以用时 sum÷2\le sum÷2 的半脑为研究对象,sumsum 为一科时间和。
转化为以 sum÷2sum÷2 为容量,题目耗时为重量和价值的 01 背包问题。
跑 01 背包后,我们知道用时大的半脑才是答案,而用时小的半脑答案为 dpsum÷2dp_{sum÷2},故单科答案为 sumdpsum÷2sum-dp_{sum÷2}
单科过程重复四次。

评论

0 条评论,欢迎与作者交流。

正在加载评论...