蓝桥杯19682 完全背包

问题描述

有 N 件物品和一个体积为 M 的背包。第 i 个物品的体积为 vi​,价值为 wi​。每件物品可以使用无限次。

请问可以通过什么样的方式选择物品,使得物品总体积不超过 M 的情况下总价值最大,输出这个最大价值即可。

输入格式

第一行输入两个正整数 N,M。(1≤N,M≤1000)

接下来 N 行,每行输入两个整数 vi,wi。(0≤vi,wi≤1000)

输出格式

输出一个整数,表示符合题目要求的最大价值。

样例输入

复制代码
4 5
1 2
2 4
3 4
4 5

样例输出

复制代码
10

说明

你可以选择 1 个第一个物品和 2 个第二个物品。

cpp 复制代码
#include<iostream>
#include<algorithm>
using namespace std;

const int N = 1e3+10;
int n, m;
int v[N], w[N];  
int dp[N];  //dp[j]表示背包容量为j时的最大价值

int main()
{
	cin>>n>>m;
	for(int i=1; i<=n; ++i) cin>>v[i]>>w[i];
	
	for(int i=1; i<=n; ++i)  //遍历每个物品
	{
		//内层循环从v[i]到m正向遍历,这使得同一物品可以被多次选取
		for(int j=v[i]; j<=m; ++j)
		{
			//dp[j]:不选当前物品
			//dp[j - v[i]] + w[i]:选当前物品
			dp[j] = max(dp[j], dp[j-v[i]] + w[i]);
		}
	}
	
	cout<<dp[m];
	
	return 0;
}
相关推荐
2501_9248787321 小时前
数据智能驱动进化:AdAgent 多触点归因与自我学习机制详解
人工智能·逻辑回归·动态规划
YYuCChi2 天前
代码随想录算法训练营第三十七天 | 52.携带研究材料(卡码网)、518.零钱兑换||、377.组合总和IV、57.爬楼梯(卡码网)
算法·动态规划
罗湖老棍子2 天前
括号配对(信息学奥赛一本通- P1572)
算法·动态规划·区间dp·字符串匹配·区间动态规划
一只小小的芙厨2 天前
寒假集训笔记·树上背包
c++·笔记·算法·动态规划
金融RPA机器人丨实在智能2 天前
2026动态规划新风向:实在智能Agent如何以自适应逻辑重构企业效率?
算法·ai·重构·动态规划
问好眼2 天前
【信息学奥赛一本通】1275:【例9.19】乘积最大
c++·算法·动态规划·信息学奥赛
菜鸟233号2 天前
力扣647 回文子串 java实现
java·数据结构·leetcode·动态规划
葵花楹2 天前
【算法题】【动态规划2】【背包动态规划】
算法·动态规划
2501_924878732 天前
企业级营销安全防线:AdAgent 合规风控体系设计与实践
人工智能·逻辑回归·动态规划
觅特科技-互站3 天前
陌讯视觉‘动态密度流’模型:亚运场馆到前海政务厅,98.6%聚众事件5秒精准定位|技术拆解+SDK实录
逻辑回归·动态规划