经典的背包问题

背包问题I
难度级别:B; 运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B

试题描述

有一个背包容积为 V 和 n 个物品,并给出每个物品有一个体积。要求从 n 个物品中,任取若干个装入背包内,使背包的剩余空间为最小。


输入

第一行两个正整数 V 和 n,分别表示背包的容积和待装物品的个数;第二行包括 n 个正整数,表示 n 个物品的体积,两两之间有一个空格分隔。

输出

一个数,表示背包中剩余空间的最小值

输入示例

24 6
8 3 12 7 9 7

输出示例

0

其他说明

数据范围:0<V≤20000,0<n≤30
 

真是太简单了,转移方程:dp[j]=max(dp[j],dp[j-a[i]]+a[i]);。

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 int main()
 5 {
 6   int v,n;
 7   cin>>v>>n;
 8   int a[n],dp[v+1];
 9   memset(dp,0,sizeof(dp));
10   for(int i=0;i<n;i++)
11   {
12     cin>>a[i];
13     for(int j=v;j>=a[i];j--)
14       dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
15   }
16   cout<<v-dp[v];
17 }

时间: 2024-10-25 07:50:54

经典的背包问题的相关文章

动态规划经典题解--背包问题

1.完全背包--背包不允许剩余 #include <iostream> #include <string.h> #define N 50002 #define M 2002 using namespace std; //测试OJ:nyoj 311 /* 背包不允许剩余,与允许剩余相比,只需将d[i]初始为负无穷大,d[0]=0 d[i]: 用去i容量时的最大价值 */ int d[N]; struct Node { int pri; int vol; }c[M]; int main

经典01背包问题 HDU2602

1 #include <cstring> 2 #include <iostream> 3 #include <algorithm> 4 5 using namespace std; 6 7 int dp[1010]; 8 int v[1010]; 9 int w[1010]; 10 11 int main() 12 { 13 int t; 14 cin>>t; 15 while(t--) 16 { 17 long long int n,tv; 18 cin&

【动态规划】多重背包问题

说明 前面已经介绍完了01背包和完全背包,今天介绍最后一种背包问题--多重背包. 这个背包,听起来就很麻烦的样子.别慌,只要你理解了前面的两种背包问题,拿下多重背包简直小菜一碟. 如果没有看过前两篇01背包和完全背包的文章,强烈建议先阅读一下,因为本文跟前两篇文章关联性很强. 多重背包 有N种物品和一个容量为T的背包,第i种物品最多有M[i]件可用,价值为P[i],体积为V[i],求解:选哪些物品放入背包,可以使得这些物品的价值最大,并且体积总和不超过背包容量. 对比一下完全背包,其实只是多了一

pat 1068 动态规划/Fina More Conis

1068. Find More Coins (30) Eva loves to collect coins from all over the universe, including some other planets like Mars. One day she visited a universal shopping mall which could accept all kinds of coins as payments. However, there was a special re

采药 2005年NOIP全国联赛普及组&amp;疯狂的采药

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

【BZOJ 2118】 2118: 墨墨的等式 (最短路)

2118: 墨墨的等式 Description 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+-+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求出有多少B可以使等式存在非负整数解. Input 输入的第一行包含3个正整数,分别表示N.BMin.BMax分别表示数列的长度.B的下界.B的上界.输入的第二行包含N个整数,即数列{an}的值. Output 输出一个整数,表示有多少b可以使等式存在非负整数解. Sample Input 2 5 1

01背包专题

>>什么是01背包<< A - Bone Collector Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Description Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to co

474. Ones and Zeroes

本周继续练习动态规划的相关题目. 题目: In the computer world, use restricted resource you have to generate maximum benefit is what we always want to pursue. For now, suppose you are a dominator of m 0s and n 1s respectively. On the other hand, there is an array with s

面试高级算法梳理笔记

面试高级算法梳理笔记 1.1 说明 本篇为<挑战程序设计竞赛(第2版)>读书笔记系列,旨在: 梳理算法逻辑 探索优化思路 深入代码细节 1.2 目录 原文首发于个人博客Jennica.Space,按算法难度划分为初中高三个级别,详细目录及链接如下: 初级篇 穷竭搜索 贪心 动态规划 数据结构 图论 数论 中级篇 二分搜索 常用技巧 数据结构(二) 动态规划(二) 网络流 计算几何 高级篇 数论(二) 博弈论 图论(二) 常用技巧(二) 智慧搜索 分治 字符串 1.3 题解 配套习题及详解同步发