1.线性DP 2.背包DP 0/1背包中的将二维化为一维,需要倒序遍历,当前状态仅由i-1层状态而来。 现在终于理解了,因为我们将i这一维给去掉了,我们我们遍历i这一层的时候,由大到小遍历,大的(正在更新的)就是我们的第i层,但是前面1~j-1却还保留在了第i-1层上(因为其尚未被遍历更新信息,所以 ...
分类:
其他好文 时间:
2021-04-16 12:06:18
阅读次数:
0
某人的房子着火了,他想从大火中带走价值总和尽量多的物品,每次他只能带走一个,分别给出挽救某物品需要的时间t,该物品开始燃烧的时间d(在d时间开始燃烧就不能再挽救该物品了),该物品的价值p。约束:n(1<=n<=100) ti(1<=ti<=20),di(1<=di<=2000),pi(1<=pi<=... ...
分类:
其他好文 时间:
2021-04-06 14:18:55
阅读次数:
0
AGC041D Problem Scores 简要题解。组合计数 + 背包 DP ...
分类:
其他好文 时间:
2021-02-24 13:07:06
阅读次数:
0
原题链接 考察:背包dp 错误思路: f[i,j] j表示和 此思路必错,会MLE. 正确思路: 需要转换式子.已知 x + x+d1 + x+d1 +d2+x+d1+d2+d3...=s 等价于 nx+(n-1)d1+(n-2)d2+.. = s. s与n已知,d在a与b徘徊,而x的范围太广,因此 ...
http://acm.hdu.edu.cn/showproblem.php?pid=1059 多重背包题; 如果sum奇数直接continue;不是奇数则判断dp[sum/2]能不能到达; 即dp[sum/2]的方案数是否为0; 注意输出格式!!! 1 #include<bits/stdc++.h> ...
分类:
其他好文 时间:
2020-07-05 22:54:20
阅读次数:
81
http://poj.org/problem?id=3181 高精+背包 完全背包求方案数则只需dp[ j ] + = dp[ j - w[ i ] ]即可;任意一种背包方案计算都只需将max变为+; 这道题要注意,求方案数一般有很多,不mod,就自己看看数据是否超内存; dp[ i ]存放前18位 ...
分类:
其他好文 时间:
2020-07-05 00:49:16
阅读次数:
92
01背包 http://acm.hdu.edu.cn/showproblem.php?pid=2546 余额为体积; 01背包比较明显; 因为是>=5时才能消费,所以预留5的空间,计算出在余额为m-5的情况下,所能花费的最大价钱; 记住,因为只要>=5,不管菜多贵,都能买;所以我们希望5元时买的菜最 ...
分类:
其他好文 时间:
2020-07-04 21:01:00
阅读次数:
64
``` #include #define ll long long using namespace std; const int N=1005; const int M=10005; int n,m,a[N],b[N],c[N]; int dp[N][M];//dp[i,j]从前i个中拿,体积为j的... ...
分类:
其他好文 时间:
2020-05-04 21:35:19
阅读次数:
52
```#include #include #include #include using namespace std;const int N = 3030;int h[N], e[N], ne[N], w[N], idx;int val[N];int n, m;//n为整个有线电视网的结点总数,m为... ...
分类:
其他好文 时间:
2020-05-03 20:25:08
阅读次数:
58
传送门 大意: 有价值分别为1..6的大理石各a[1..6]块,现要将它们分成两部分,使得两部分价值之和相等,问是否可以实现。其中大理石的总数不超过20000。 解题思路: 妥妥的多重背包+二进制拆分,主要写一下二进制拆分存个档(儿时的噩梦)。 总所周知,20,21,22,……2k-1从中挑选若干个 ...
分类:
其他好文 时间:
2020-04-09 00:16:52
阅读次数:
90