背包(采药)

有n件物品和一个容量为c的背包。第i件物品的重量是w[i],价值是 v[i]。求解将哪些物品装入背包可使这些物品的重量和不超过背包容量,且价值总和最大。输出总价值。

Sample Input

130 10

54 68

4 58

85 67

1 6

35 64

84 57

7 98

57 75

36 96

72 5

70 3

71 100

69 1

1 2

Sample Onput

333

3

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<cstdlib>
 6 using namespace std;
 7 int g[100][1000];
 8 int main()
 9 {
10     int c,n;
11     while(~scanf("%d%d",&c,&n))
12     {
13         int i,j,w,v;
14         scanf("%d%d",&w,&v);
15         for(i=1;i<=w;i++)
16         g[1][i]=0;
17         for(i=w;i<=c;i++)
18         g[1][i]=v;
19         for(i=2;i<=n;i++)
20         {
21             scanf("%d%d",&w,&v);
22             for(j=1;j<=c;j++)
23             {
24                 if(j<w)
25                 g[i][j]=g[i-1][j];
26                 else
27                 g[i][j]=max(g[i-1][j-w]+v,g[i-1][j]);
28             }
29         }
30         printf("%d\n",g[n][c]);
31     }
32     return 0;
33 }

时间: 2024-08-11 07:47:13

背包(采药)的相关文章

动态规划_01背包:采药

Description 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值.我会给你一段时间,在这段时间里,你可以采到一些草药.如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大.” 如果你是辰辰,你能完成这个任务吗? Input 第一行有两个整数T(1 <= T <= 1000

TYVJ 采药 0-1背包(水题)

背景 Background NOIP2005复赛普及组第三题 描述 Description 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值.我会给你一段时间,在这段时间里,你可以采到一些草药.如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大.” 如果你是辰辰,你能完成这个任务

背包形动态规划 fjutoj2347 采药

采药 TimeLimit:1000MS  MemoryLimit:128MB 64-bit integer IO format:%lld Problem Description 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:"孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值.我会给你一段时间,在这段时间里,你可以采到一些草药.如果你是

tyvj 1005 采药 0-1背包 优化的一位数组 dp 代码1

#include <iostream> #include <string.h> using namespace std; int dp[1005], w[105],v[105],T,M; int max(int x,int y) {    return x>y?x:y;   } void  f( ) {   int i,j; for (i=1; i<=M; i++) for (j=T;j>=0; j--) if (j>=w[i]) dp[j]=max(dp[

tyvj 1005 采药 0-1背包 优化的一位数组 dp 代码2

#include <iostream>#include <string.h>using namespace std;int dp[1005], w[105],v[105],T,M;int max(int x,int y){    return x>y?x:y;   }void  f( ){   int i,j;    for (i=1; i<=M; i++)        for (j=T;j>=w[i]; j--)          dp[j]=max(dp[j

tyvj 1005 采药 0-1背包 优化的一位数组 dp 代码3

#include <iostream>#include <string.h>using namespace std;int dp[1005], w,v,T,M;int max(int x,int y){    return x>y?x:y;   }void  f( ){   int i,j;    for (i=1; i<=M; i++)    {   cin>>w>>v;         //直接读进去        for (j=T;j>

采药---0-1背包型dp

题目描述 Description 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:"孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值.我会给你一段时间,在这段时间里,你可以采到一些草药.如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大." 如果你是辰辰,你能完成这个任务吗? 输入描述 Input Descriptio

【日常学习】【背包DP(完全背包)】洛谷1616 疯狂的采药题解

这是一道典型的完全背包题目 先上题目···于是又要迎来洛谷那令人不知道说什么的霸气摘要··· 洛谷1616 疯狂的采药 本题地址:http://www.luogu.org/problem/show?pid=1616 题目背景 此题为NOIP2005普及组第三题的疯狂版. 此题为纪念LiYuxiang而生. 题目描述 LiYuxiang是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞

采药(01背包改编)

这道题出自NOIP2005普及组第三题,原题为: 题目描述 Description 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:"孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值.我会给你一段时间,在这段时间里,你可以采到一些草药.如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大." 如果你是辰辰,你能完成这个任

采药---背包动规

题目描述: 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:"孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值.我会给你一段时间,在这段时间里,你可以采到一些草药.如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大." 如果你是辰辰,你能完成这个任务吗? 输入格式: 第一行有两个整数T(1 <= T <=