背包问题
平心处
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
背包问题学习8——poj2184——01背包变形
题目链接 1.思想转换 对于每头牛,要么选要么不选,有点类似于01背包,但是又有两个参数:智力值和幽默值,我们设dp[i]为智力值为i时对应的幽默值最大,最终选择完后能够得到最大的幽默值, ...原创 2021-05-17 10:30:10 · 161 阅读 · 1 评论 -
背包问题学习7——poj3181——高精度大数处理
题目链接 数据超过范围时的处理方法 #include<iostream> using namespace std; #define ll long long const ll inf=1e18; int main() { int n,k; while(cin>>n>>k){ ll dp[1005]={0},a[1005]={0}; dp[0]=1; for(int i=1;i<=k;i++){原创 2021-05-17 09:28:34 · 184 阅读 · 0 评论 -
周末总结
背包问题学习1 背包问题学习2 背包问题学习3 时间分割点(上周所写以及本周所写) 背包问题学习4 背包问题学习5 背包问题学习6原创 2021-05-17 10:35:33 · 141 阅读 · 0 评论 -
背包问题学习6——poj——1787——记录路径
记录路径的代码书写注意点 1.因为是记录路径,所以要一个一个的背包进行更新,不能使用二进制代码优化 2.主要代码部分 if (dp[j - v[i]] + 1 > dp[j] && dp[j - v[i]] && used[j - v[i]] < num[i]) { dp[j] = dp[j - v[i]] + 1; used[j] = used[j -原创 2021-05-15 22:40:53 · 436 阅读 · 0 评论 -
背包问题学习5——循环细节——poj2163
题目链接 1.循环细节 写出相应代码后,如果循环明显会超时,则考虑优化 可能的优化角度 (1)代码本身能够优化:比如背包的二进制优化,即是对代码本身进行优化 (2)题目条件进行优化:比如说这个题,本金和固定bond部分都是1000的倍数,从而对循环量进行优化 对第二条也要警惕些,从第二条感觉到题目的输入部分对数据量的描述也要警惕了(能够优化循环量) 2.题目代码 #include<iostream> #include<cstdio> #include<cstring> u原创 2021-05-12 22:20:10 · 188 阅读 · 1 评论 -
背包问题学习4——上界确定(鸽笼原理)、二进制代码优化放进循环中——poj3260(补充理解)
题目链接 1.二进制代码优化放进循环中的代码 for (i = 1; i <= n; i++) { for (k = 1; k <= num[i]; k *= 2) { for (j = vol; j >= k * val[i]; j--) { dp[j] = min(dp[j], dp[j - k * val[i]] +原创 2021-05-12 00:49:23 · 215 阅读 · 4 评论 -
背包问题学习3——dp状态覆盖
poj1276/作业题O 做题时漏掉的点:dp状态更新覆盖掉了之前的状态 反思点:降维时要考虑之前的状态是否会被覆盖掉 #include <iostream> #include <stdio.h> #include <algorithm> #include <stdlib.h> #include<vector> #define N 10 #define maxn 10010 #define maxnn 100010 using namespace原创 2021-05-07 21:30:32 · 197 阅读 · 1 评论 -
背包问题学习2——hdu1059——思维转换、二进制优化
题目链接 1.思维转换 两个人分的石子重量值相同,等效成一个人分得一半的石子值,瞬间出来了背包问题模板 也就是说有相同量要归到最小规模——便于表示、出思路 2.二进制优化代码模板 int j = 1; for (int i = 1; i <= N; i++) { int temp = 1; while (a[i] > temp) { c[j++] = temp原创 2021-05-06 23:18:18 · 227 阅读 · 1 评论 -
背包问题学习1——去除dp后效性——hdu3466——Proud Merchants
作业题E/hdu3466 #include<algorithm> #include<iostream> #include<vector> using namespace std; const int maxn = 5001; int n, m; int dp[maxn]; struct xiao { int pi, qi, vi; }a[maxn]; bool cmp(xiao x, xiao y) { return x.pi - x.qi > y原创 2021-05-05 09:42:46 · 302 阅读 · 0 评论
分享