题目链接:点击进入

题目分析:

简单的组合背包模板题,但是递推的同时要刷新这种情况使用了哪些物品

ac代码:

#include<bits/stdc++.h>
using namespace std;
int weigh[],zhu[],t[];
struct student
{
int s;
int number;
int a[];
}f[][];
int main()
{
std::ios::sync_with_stdio(false);
int m,v,n;//m总重量,v总阻力,n物品数
cin>>m>>v>>n;
for(int i=;i<=n;i++)
{
cin>>weigh[i]>>zhu[i]>>t[i];//weigh个体重量,zhu个体阻力,t个体价值
}
for(int i=;i<=n;i++)
for(int mi=m;mi>=weigh[i];mi--)
for(int vi=v;vi>=zhu[i];vi--)
{
//printf("\nnumber=%d\n",f[0][0].number);
if(f[mi][vi].s<f[mi-weigh[i]][vi-zhu[i]].s+t[i])
{
f[mi][vi].s=f[mi-weigh[i]][vi-zhu[i]].s+t[i];
if(f[mi-weigh[i]][vi-zhu[i]].number==)
{
f[mi][vi].a[]=i;
f[mi][vi].number=;
}
else
{
for(int x=;x<=f[mi-weigh[i]][vi-zhu[i]].number;x++)
{
f[mi][vi].a[x]=f[mi-weigh[i]][vi-zhu[i]].a[x];
}
f[mi][vi].number=f[mi-weigh[i]][vi-zhu[i]].number+;
f[mi][vi].a[f[mi][vi].number]=i;
}
}
}
int maxn=f[m][v].s,last_i=m,last_j=v;
printf("%d\n",maxn);
for(int i=m;i>=;i--)
for(int j=v;j>=;j--)
{
if(f[i][j].s!=maxn&&f[last_i][last_j].s==maxn)
{
for(int x=;x<=f[last_i][last_j].number;x++)
{
printf("%d ",f[last_i][last_j].a[x]);
}
//printf("%d",f[last_i][last_j].number);
return ;
}
last_i=i;last_j=j;
}
return ;
}

然后最后在找到相同时间下使用的最少物品情况就好了

对于f数组可以用结构体存,这样更方便,顶多不好写,可是思路清晰

我对于当前已经存了多少个数是从一开始记,所以用了if,else的分类讨论,防止出查错

P1759 通天之潜水(不详细,勿看)(动态规划递推,组合背包,洛谷)的更多相关文章

  1. P1759 通天之潜水(双写法+解析)

    算法解析 动态规划问题满足三大重要性质 最优子结构性质:如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质(即满足最优化原理).最优子结构性质为动态规划算法解决问题提供了重 ...

  2. 洛谷 P1759 通天之潜水

    P1759 通天之潜水 19通过 65提交 题目提供者lych 标签动态规划洛谷原创 难度普及/提高- 提交该题 讨论 题解 记录 最新讨论 暂时没有讨论 题目背景 直达通天路·小A历险记第三篇 题目 ...

  3. 洛谷——P1759 通天之潜水

    P1759 通天之潜水   题目背景 直达通天路·小A历险记第三篇 题目描述 在猴王的帮助下,小A终于走出了这篇荒山,却发现一条波涛汹涌的河拦在了自己的面前.河面上并没有船,但好在小A有n个潜水工具. ...

  4. 洛谷P1759 通天之潜水

    题目背景 直达通天路·小A历险记第三篇 题目描述 在猴王的帮助下,小A终于走出了这篇荒山,却发现一条波涛汹涌的河拦在了自己的面前.河面上并没有船,但好在小A有n个潜水工具.由于他还要背重重的背包,所以 ...

  5. luogu P1759 通天之潜水

    题目背景 直达通天路·小A历险记第三篇 题目描述 在猴王的帮助下,小A终于走出了这篇荒山,却发现一条波涛汹涌的河拦在了自己的面前.河面上并没有船,但好在小A有n个潜水工具.由于他还要背重重的背包,所以 ...

  6. p1036 选数(不详细勿看,递归)

    题目:传送门 这题,不会做,而且看了好久才看懂题解的,然后在题解的基础上补了一个 if(start>end) return 0 感觉这样对于我更直观 转载自:大神博客的传送门,点击进入 先声明, ...

  7. 洛谷 通天系列 P1760 P1757 P1759

    P1760 通天之汉诺塔 汉诺塔问题.一个高精乘单精解决 ans=2^n-1 /*by SilverN*/ #include<algorithm> #include<iostream ...

  8. 51nod 1126 求递推序列的第N项 思路:递推模拟,求循环节。详细注释

    题目: 看起来比较难,范围10^9 O(n)都过不了,但是仅仅是看起来.(虽然我WA了7次 TLE了3次,被自己蠢哭) 我们观察到 0 <= f[i] <= 6 就简单了,就像小学初中学的 ...

  9. 洛谷P1757 通天之分组背包

    题目背景 直达通天路·小A历险记第二篇 题目描述 自01背包问世之后,小A对此深感兴趣.一天,小A去远游,却发现他的背包不同于01背包,他的物品大致可分为k组,每组中的物品相互冲突,现在,他想知道最大 ...

随机推荐

  1. Pascal输出星星

    program Project2; {$APPTYPE CONSOLE} uses SysUtils; var i,j:integer; begin { TODO -oUser -cConsole M ...

  2. 不让浏览器缓存input的值

    方法一: 在不想使用缓存的input中添加 autocomplete="off"eg: <input type="text" autocomplete=& ...

  3. 状压dp之二之三 炮兵阵地/玉米田 By cellur925

    一.简单的状压dp 玉米田 题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ ...

  4. 配置yum源的步骤(阿里源)

    配置yum源的步骤1.可以移除默认的yum仓库,也就是删除 /etc/yum.repos.d/底下所有的.repo文件(踢出国外的yum源) 1.配置yum源,找到阿里云的官方镜像源地址 https: ...

  5. poj 3281 Dining (最大网络流)

    题目链接: http://poj.org/problem?id=3281 题目大意: 有n头牛,f种食物,d种饮料,第i头牛喜欢fi种食物和di种饮料,每种食物或者饮料被一头牛选中后,就不能被其他的牛 ...

  6. 状压DP+记忆化搜索 UVA 1252 Twenty Questions

    题目传送门 /* 题意:给出一系列的01字符串,问最少要问几个问题(列)能把它们区分出来 状态DP+记忆化搜索:dp[s1][s2]表示问题集合为s1.答案对错集合为s2时,还要问几次才能区分出来 若 ...

  7. 贪心+stack Codeforces Beta Round #5 C. Longest Regular Bracket Sequence

    题目传送门 /* 题意:求最长括号匹配的长度和它的个数 贪心+stack:用栈存放最近的左括号的位置,若是有右括号匹配,则记录它们的长度,更新最大值,可以在O (n)解决 详细解释:http://bl ...

  8. 题解报告:hdu1995汉诺塔V(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1995 Problem Description 用1,2,...,n表示n个盘子,称为1号盘,2号盘,. ...

  9. uwp选取文件夹并读取其中的图片

    uwp对文件的操作和wpf,winform等等有很大的不同,主要原因是uwp对权限的要求比较严格,不能想从前那样随心所欲的读取文件. 1.首先找到Package.appxmanifest这个文件,在功 ...

  10. java数组实现买彩票(平移覆盖思想)

    package com.wh.shuzu; /** * 买彩票 * @author 贾相如同学 * 平移覆盖思想 */ public class Lotery3 { public static voi ...