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

题目描写叙述

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

这次小P的寻宝之路可没有那么的轻松,他们走到了一个森林,小鑫一不小心被触发了机关,被困在了一个大笼子里面。笼子旁边上有一道题目和一个password锁。上面说仅仅要解出此题输入password就可以救出被困人。

小鑫不是非常聪明,所以他做不出来。他知道小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-11 04:47:02

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

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

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

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

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

UVA 10306 e-Coins(全然背包: 二维限制条件)

option=com_onlinejudge&Itemid=8&page=show_problem&problem=1247">http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1247 题意: 对于每一个例子.先给定两个数n,m,分别表示有n种硬币,对于每一种硬币有两个价值.分别记做x,y,题目要求从中

[2012山东ACM省赛] Pick apples (贪心,全然背包,枚举)

Pick apples Time Limit: 1000MS Memory limit: 165536K 题目描写叙述 Once ago, there is a mystery yard which only produces three kinds of apples. The number of each kind is infinite. A girl carrying a big bag comes into the yard. She is so surprised because s

nyist oj 311 全然背包 (动态规划经典题)

全然背包 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描写叙述 直接说题意,全然背包定义有N种物品和一个容量为V的背包.每种物品都有无限件可用.第i种物品的体积是c,价值是w. 求解将哪些物品装入背包可使这些物品的体积总和不超过背包容量,且价值总和最大.本题要求是背包恰好装满背包时,求出最大价值总和是多少. 假设不能恰好装满背包,输出NO 输入 第一行: N 表示有多少组測试数据(N<7). 接下来每组測试数据的第一行有两个整数M.V. M表示物品种类的数目,V表示背

小圣求职记(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个对象指针并不会进行实例化