当前位置: 首页 > news >正文

网站怎么做翻页新年祝福语在线制作网站

网站怎么做翻页,新年祝福语在线制作网站,做电影网站如何不侵权,襄阳网络公司 网站建设【模板】01背包 题目链接 题目描述 : 输入描述: 输出描述: 示例1 输入 3 5 2 10 4 5 1 4输出 14 9说明 装第一个和第三个物品时总价值最大,但是装第二个和第三个物品可以使得背包恰好装满且总价值最大。 示例2 输入 3 8 12 6 11 8 6 8输出 8 0说明 装第三个物…

【模板】01背包 题目链接

题目描述 :

在这里插入图片描述

输入描述:

在这里插入图片描述

输出描述:

在这里插入图片描述

示例1

输入

3 5
2 10
4 5
1 4

输出

14
9

说明

装第一个和第三个物品时总价值最大,但是装第二个和第三个物品可以使得背包恰好装满且总价值最大。

示例2

输入

3 8
12 6
11 8
6 8

输出

8
0

说明

装第三个物品时总价值最大但是不满,装满背包无解。

备注:

要求O(nV)的时间复杂度,O(V)空间复杂度

题目描述

给定 n 个物品,每个物品有体积 v[i] 和价值 m[i]。一个容量为 vs 的背包。

你可以选择一些物品放入背包中,使得总体积 不超过或恰好等于 背包容量,目标是使总价值最大。

一、 DP 状态定义

dp[i][j] 表示前 i 个物品中选择若干物品,装入容量为 j 的背包中可以获得的最大价值。

这个状态定义允许容量 j 不超过 当前背包容量,不要求填满。


二、状态转移方程

对于每个物品 i 和容量 j

  • 如果当前物品可以放进容量 j 的背包中(即 j >= v[i]),那么有两种选择:
    • 不选这个物品:dp[i][j] = dp[i-1][j]
    • 选这个物品:dp[i][j] = max(dp[i][j], dp[i-1][j - v[i]] + m[i])

否则:

  • 只能不选:dp[i][j] = dp[i-1][j]

三、初始化方式

vector<vector<ll>> dp(n+1, vector<ll>(vs+1, INT_MIN));
dp[0][0] = 0;
  • 初始状态只有 dp[0][0] = 0,表示没有物品、容量为 0 时合法;
  • 其他所有状态初始化为 INT_MIN(极小值),表示不可达;
  • 这样在后续转移过程中,只保留有效路径的状态。

四、输出策略

✅ 不要求填满的情况下的最大价值(ender1):

ll ender1 = INT_MIN;
for (ll i = vs; i >= 1; i--) {ender1 = max(ender1, dp[n][i]);
}
ender1 = (ender1 < 0) ? 0 : ender1;
  • 遍历 dp[n][1...vs],找出最大值;
  • 如果所有值都为负数,则说明没有任何合法组合,返回 0。

✅ 必须恰好填满容量 vs 的情况(ender2):

ll ender2 = (dp[n][vs] < 0) ? 0 : dp[n][vs];
  • 直接取 dp[n][vs]
  • 如果它是负数,说明无法恰好填满容量 vs,返回 0。

五、易错点总结

易错点原因解决方法
❗ 忽略 j=0 的遍历容量 j=0 是合法状态,必须包含在内内层循环从 j=0 开始
❗ 初始化错误若将 dp 初始化为 0,会导致无法区分是否可达使用 INT_MIN 表示不可达
❗ 忘记处理负值若最终结果为负,说明无合法组合加上 (val < 0) ? 0 : val 处理
❗ 不理解 ender1ender2 区别一个是“任意容量下”的最大值,一个是“特定容量”下的最大值分开处理即可

六、完整代码

#include<bits/stdc++.h>
using ll = long long;
using namespace std;int main()
{ll n, vs;cin >> n >> vs;vector<ll> m(n + 1, 0);vector<ll> v(n + 1, 0);for (ll i = 1; i <= n; ++i)cin >> v[i] >> m[i];// 初始化 dp 数组vector<vector<ll>> dp(n + 1, vector<ll>(vs + 1, INT_MIN));dp[0][0] = 0;for (ll i = 1; i <= n; i++) {for (ll j = 0; j <= vs; j++) {if (j >= v[i])dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - v[i]] + m[i]);elsedp[i][j] = dp[i - 1][j];}}// 不要求填满的最大价值ll ender1 = INT_MIN;for (ll i = vs; i >= 1; i--){ender1 = max(ender1, dp[n][i]);}ender1 = (ender1 < 0) ? 0 : ender1;// 恰好填满的最大价值ll ender2 = (dp[n][vs] < 0) ? 0 : dp[n][vs];cout << ender1 << endl << ender2;return 0;
}

想从(1,1)开始转移的话

必须显式初始化dp[n][0]=0;
代码如下:

#include<bits/stdc++.h>
using ll = long long;
using namespace std;int main()
{ll n, vs;cin >> n >> vs;vector<ll>m(n + 1, 0);vector<ll>v(n + 1, 0);for (ll i = 1; i <= n; i++){cin >> v[i] >> m[i];}//原问题:这个背包至多能装多大价值的物品//抽象成 前n个物品(经过选择)装满体积为vs的背包 能获得的最大价值//dp[i][j]表示 前i个物品(经过选择)装满体积为vs的背包,能获得的最大价值//状态转移方程:(每个位置的元素都有选 或 不选 两种状态)//dp[i][j]=max(dp[i-1][j](不选), dp[i-1][j-v[i]]+m[i])(选)//注意体积问题:体积j>=v[i]时,才能选择当前物品vector<vector<ll>>dp(n + 1, vector<ll>(vs + 1, INT_MIN));//显式初始化 前n件物品 (经过选择) 装满体积为0的背包,能获得的最大价值为0for (ll i = 0; i <= n; i++){dp[i][0] = 0;}for (ll i = 1; i <= n; i++){for (ll j = 1; j <= vs; j++){if (j >= v[i]){dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - v[i]] + m[i]);}else{dp[i][j] = dp[i - 1][j];}}}//最大价值应该是最后一行:前n个物品 放满 体积为j的最大价值(找最大的)//dp[n][vs]应该是填满体积为vs时 创造的最大价值ll ender1 = INT_MIN;for (ll i = vs; i >= 1; i--){ender1 = max(ender1, dp[n][i]);}ender1 = (ender1 < 0) ? 0 : ender1;ll ender2 = (dp[n][vs] < 0) ? 0 : dp[n][vs];//cout<<dp[n][vs]<<endl;cout << ender1 << endl << ender2;return 0;
}
http://www.dtcms.com/a/539169.html

相关文章:

  • 用ps软件做ppt模板下载网站自己编程做网站
  • 旅游网站建设的结论怎样建立俄罗斯网站
  • 营销型网站设计流程教做甜品的网站
  • 网站建设教程百度云深圳人力资源网求职
  • wordpress 图片标签佛山百度关键词seo外包
  • 微信与与网站建设wordpress影视主题52破解
  • 常德经开区网站用户体验好的网站
  • 温州网站设计只找亿企邦h5网站怎么做
  • 个人网站备案需要哪些资料网站建设交互效果
  • 做100个网站免备案域名购买平台
  • 太原市免费网站建设一元夺宝网站开发
  • 应用最广网站建设技术我的个人博客
  • 招聘桂林网站推广维护建设用什么软件制作网站
  • 商城网站开发视频湖北什么是网络营销
  • 池州最好的网站建设做网站大概需要几个人
  • 哈尔滨制作网站工作室网络营销简介
  • 全网响应式网站wordpress+外观+权限
  • 公司网站如何做的美丽信息流投放公司
  • 要加强分院网站建设怎么搞到网站
  • ppt的网站导航栏怎么做的网易搜索引擎入口
  • 自己做网站运营新手怎么注册自媒体账号
  • 自己怎么做网站模块推广网站怎么建设
  • 管理系统的组成seo网络培训学校
  • alexa网站排名专业团队宣传语
  • 权重高的网站是几杭州亚运村建设指挥部网站
  • 郑州网站建设商城定制华阴网络推广
  • 企业营销网站建设费用预算南京网站公司哪家好
  • 企业网站建设原则是( )网站建设项目执行进度表
  • wap网站源代码宁波房产交易信息网官网
  • 网站建设背景介绍自己在家怎么做电商