(完全背包)小P寻宝记——好基友一起走

题目描述

话说,上次小P到伊利哇呀国旅行得到了一批宝藏。他是相当开心啊,回来就告诉了他的好基友小鑫,于是他们又结伴去伊利哇呀国寻宝。

这次小P的寻宝之路可没有那么的轻松,他们走到了一个森林,小鑫一不小心被触发了机关,被困在了一个大笼子里面,笼子旁边上有一道题目和一个密码锁,上面说只要解出此题输入密码即可救出被困人。小鑫不是很聪明,所以他做不出来,他知道小P很笨,更解不出来。所以他就让小P独自回去,不用管他。但是小P重情重义不会抛弃他离去。他说:“不,好基友一起走!”。于是就感动了上帝,上帝特派你来替他们解决问题。聪明的你要加油了啊!

题目描述:给你n种物品和一个体积为v的包包。每种物品有无数种,体积是vi价值是wi。求出包包v所能装的最大价值的东西。

输入

多组输入。第一行有两个正整数n(0<n<=10000), v(0<v<= 10000)。接下来两行每行有n个数字。第一行表示每种物品的价值wi(0<wi<100),第二行表示每种物品的体积vi(0<vi<100)。

输出

输出最多可以得到的价值。输出结果救出小鑫。

示例输入

5 20
1 2 3 4 5
2 6 3 5 4

示例输出

25

///完全背包,代码和01背包差不多,就是将for循环中j从m到0改为从0到m

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define N 10010
int dp[N];
int max(int a,int b)
{
  if(a>=b)
  return a;
  else
  return b;
}
int main()
{
  int n,m,i,j;
  int wi[N],pi[N];
  while(~scanf("%d%d",&n,&m))
  {
    for(i=0;i<=n-1;i++)
    {
      scanf("%d",&pi[i]);
    }
    for(i=0;i<=n-1;i++)
    {
      scanf("%d",&wi[i]);
    }
    for(i=0;i<=m;i++)
    {
      dp[i]=0;
    }
    for(i=0;i<=n-1;i++)
    {
      for(j=0;j<=m;j++)
      {
        if(j>=wi[i])
        {
          dp[j]=max(dp[j],dp[j-wi[i]]+pi[i]);
        }
      }
    }
    printf("%d\n",dp[m]);
  }
  return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 21:47:40

(完全背包)小P寻宝记——好基友一起走的相关文章

小P寻宝记——好基友一起走

小P寻宝记--好基友一起走 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 话说,上次小P到伊利哇呀国旅行得到了一批宝藏.他是相当开心啊,回来就告诉了他的好基友小鑫,于是他们又结伴去伊利哇呀国寻宝. 这次小P的寻宝之路可没有那么的轻松,他们走到了一个森林,小鑫一不小心被触发了机关,被困在了一个大笼子里面,笼子旁边上有一道题目和一个密码锁,上面说只要解出此题输入密码即可救出被困人.小鑫不是很聪明,所以他做不出来,他知道小P很笨,

(全然背包)小P寻宝记——好基友一起走

题目描写叙述 话说.上次小P到伊利哇呀国旅行得到了一批宝藏.他是相当开心啊.回来就告诉了他的好基友小鑫.于是他们又结伴去伊利哇呀国寻宝. 这次小P的寻宝之路可没有那么的轻松,他们走到了一个森林,小鑫一不小心被触发了机关,被困在了一个大笼子里面.笼子旁边上有一道题目和一个password锁.上面说仅仅要解出此题输入password就可以救出被困人. 小鑫不是非常聪明,所以他做不出来.他知道小P非常笨.更解不出来.所以他就让小P独自回去,不用管他.可是小P重情重义不会抛弃他离去.他说:"不,好基友一

SDUTOJ 2826 小P寻宝记——好基友一起走

#include<iostream> #include<memory.h> using namespace std; int dp[10010]; int max(int a,int b) { return a>b?a:b; } int main() { int n,v,vi[10100],wi[10100],i,j; while(cin>>n>>v) { memset(vi,0,sizeof(vi)); memset(wi,0,sizeof(wi))

01背包--小P寻宝记——粗心的基友

题目描写叙述 这对好基友他们在经历无数的艰难险阻后.最终找到了宝藏.无奈的是这一对好基友居然是一样的粗心,又忘记了带一个大一点的包包,可惜啊..选择又出现了啊.. 已知包的体积是v,每种宝贝仅仅有一种.宝贝的体积是pi,价值是wi.求出这对粗心的基友能够最多带走价值多少的宝藏. 输入 输入数据有多组. 每组第一行有两个正整数n(n <= 10000)和v(v <= 10000)分别表示n种宝贝和包的体积. 接下来n行,每行有两个正整数vi, wi. 分别表示每种宝藏的体积vi (vi<=

SDUT OJ 2783 小P寻宝记

#include<iostream> #include<memory.h> #define N 10020 using namespace std; int dp[N],pi[N],wi[N]; int max(int a,int b) { return a>b? a:b; } int main() { int n,v,i,j; while(cin>>n>>v) { memset(dp,0,sizeof(dp)); memset(pi,0,sizeof

小圣求职记(1):腾讯篇

笔试 参加了实习和校招两场笔试,笔试题目难度中等,涉及计算机网络.操作系统.数据库.算法和数据结构.C/C++语法.下面是2014年9月份武汉地区软件研发类的题目和我的解答(事后做的,我是在合肥中科大参加的腾讯笔试,题目不一样): 一.不定项选择题 1. 如果MyClass为一个类,执行“MyClass a[5],*b[6]”语言会自动调用该类构造函数的次数是() A. 2 B.5 C. 4 D. 9 解析:选B,5次.只有a[5]定义了5个对象,而*b[6]定义的是6个对象指针并不会进行实例化

【单片机小知识随记1】——排阻respack-8

一.定义 排阻,就是若干个参数完全相同的电阻,它们的一个引脚都连到一起,作为公共引脚,其余引脚正常引出.所以如果一个排阻是由n个电阻构成的,那么它就有n+1只引脚,一般来说,最左边的那个是公共引脚.它在排阻上一般用一个色点标出来. 二.作用 内存芯片下方均匀分布的"芝麻粒",实际上是位于内存颗粒和金手指之间的"排阻".排阻,是一排电阻的简称.我们知道,内存在处理.传输数据时会产生大小不一的工作电流.而在内存颗粒走线的必经之处安装一排电阻,则能够帮助内存起到稳压作用,

Codeforces Round #535 (Div. 3)小上分记

Codeforces Round #535 (Div. 3)小上分记 前言 被拉去买新年衣服了,导致半小时后才进场. 虽然做了4道题,但是rating还是涨得不多. 用predictor看了rating变化后心灰意冷,不看E题了. A ...800的难度. B 本来还在想要不要用什么STL.后来发现直接用桶就行了.然后就可以水过了. C 题意差点理解不了. 就6种情况都去考虑一下,找最小代价的即可.不要考虑少了. 每次都是\(O(n)\)的,所以能搞. D 贪心地换字母即可. E 坑.待填. 原

小武小久成长记

Posts 小久坐玩具车 小武画狐狸 Jun 29, 2019 小武气垫船 Jun 18, 2019 小武剪纸 Jun 16, 2019 父亲节 Jun 15, 2019 组装车 Jun 10, 2019 小久帮爷爷修理 Jun 4, 2019 三个小朋友开船 Jun 2, 2019 小武画兔子 May 6, 2019 小武和小久用彩笔乱画 Apr 21, 2019 两兄弟吃药 Apr 20, 2019 小久叫爷爷 Apr 19, 2019 小久躲起来 Apr 19, 2019 小久够奶瓶很得意