hdu 2602 Bone Collector 01背包模板

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602

题目要求是尽量装的最多,所以初始化的时候都为0即可。

如果要求恰好装满,初始化的时候除了dp[0] = 0,其他都要设成-inf,表示不合法情况。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int T;
 4 int dp[1010][1010];
 5 int v[1010], w[1010];
 6 int main()
 7 {
 8  //   freopen("in.txt", "r", stdin);
 9    // freopen("out.txt", "w", stdout);
10     scanf("%d", &T);
11     while(T--)
12     {
13         int N, V;
14         scanf("%d%d", &N, &V);
15         memset(dp, 0, sizeof(dp));
16         for(int i = 1; i <= N; i++) scanf("%d", &v[i]);
17         for(int i = 1; i <= N; i++) scanf("%d", &w[i]);
18
19         for(int i = 1; i <= N; i++)
20         {
21             for(int j = 0; j <= V; j++)
22             {
23                 if(j >= w[i]) dp[i][j] = max(dp[i-1][j-w[i]]+v[i], dp[i-1][j]);
24                 else dp[i][j] = dp[i-1][j];
25             }
26         }
27         printf("%d\n", dp[N][V]);
28
29     }
30     return 0;
31 }

滚动数组:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int T;
 4 int dp[1010];
 5 int v[1010], w[1010];
 6 int main()
 7 {
 8  //   freopen("in.txt", "r", stdin);
 9    // freopen("out.txt", "w", stdout);
10     scanf("%d", &T);
11     while(T--)
12     {
13         int N, V;
14         scanf("%d%d", &N, &V);
15         memset(dp, 0, sizeof(dp));
16         for(int i = 1; i <= N; i++) scanf("%d", &v[i]);
17         for(int i = 1; i <= N; i++) scanf("%d", &w[i]);
18
19         for(int i = 1; i <= N; i++)
20         {
21             for(int j = V; j >= w[i]; j--)
22             {
23                 dp[j] = max(dp[j-w[i]]+v[i], dp[j]);
24             }
25         }
26         printf("%d\n", dp[V]);
27
28     }
29     return 0;
30 }
时间: 2024-08-14 19:10:51

hdu 2602 Bone Collector 01背包模板的相关文章

HDU 2602 Bone Collector(01背包裸题)

Bone Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 60469    Accepted Submission(s): 25209 Problem Description Many years ago , in Teddy’s hometown there was a man who was called “Bo

hdu 2602 Bone Collector 01背包

Bone Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 50442    Accepted Submission(s): 21153 Problem Description Many years ago , in Teddy’s hometown there was a man who was called “Bon

HDU 2602 Bone Collector (01背包DP)

题意:给定一个体积,和一些物品的价值和体积,问你最大的价值. 析:最基础的01背包,dp[i] 表示体积 i 时最大价值. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <cmath> #include <iostream>

HDU 2602 Bone Collector (01背包问题)

原题代号:HDU 2602 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 原题描述: Problem Description Many years ago , in Teddy's hometown there was a man who was called "Bone Collector". This man like to collect varies of bones , such as dog's , cow's ,

hdu 2602 Bone Collector 【01背包模板】

Bone Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 40404    Accepted Submission(s): 16786 Problem Description Many years ago , in Teddy's hometown there was a man who was called "Bo

HDU 2602 (简单的01背包) Bone Collector

很标准的01背包问题 1 //#define LOCAL 2 #include <algorithm> 3 #include <cstdio> 4 #include <cstring> 5 using namespace std; 6 7 const int maxn = 1000 + 10; 8 int w[maxn], v[maxn], dp[maxn]; 9 10 int main(void) 11 { 12 #ifdef LOCAL 13 freopen(&qu

HDU 2602 Bone Collector 0/1背包

题目链接:pid=2602">HDU 2602 Bone Collector Bone Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 28903    Accepted Submission(s): 11789 Problem Description Many years ago , in Teddy's h

hdu2602 Bone Collector (01背包)

本文出自:http://blog.csdn.net/svitter 题意:典型到不能再典型的01背包.给了我一遍AC的快感. //============================================================================ // Name : 2602.cpp // Author : vit // Version : // Copyright : Your copyright notice // Description : Hello

hdu 2602 Bone Collector(01背包)模板

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 Bone Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 54132    Accepted Submission(s): 22670 Problem Description Many years ago , in