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

网站权重提升工具河南百度seo

网站权重提升工具,河南百度seo,企业域名多少钱,海南三亚8v1视频目录 1. 朴素解法 2. 优化 原题链接: 3. 完全背包问题 - AcWing题库 题目描述: 有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。 第 i 种物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些…

目录

1. 朴素解法

2. 优化 


原题链接:

3. 完全背包问题 - AcWing题库

题目描述:

有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用

第 i 种物品的体积是 vi,价值是 wi。

求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。
输出最大价值。

输入格式

第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。

接下来有 N 行,每行两个整数 vi, wi,用空格隔开,分别表示第 i 种物品的体积和价值。

输出格式

输出一个整数,表示最大价值。

数据范围

0< N, V ≤10000
0< vi, wi ≤ 1000

输入样例

4 5
1 2
2 4
3 4
4 5

输出样例:

10

在解决这道题之前我们先来回顾一下 Acwing 的讲师:y总,他讲述的解决动态规划问题的一般步骤 。


集合:表示状态中每一个下标位置可能的选择。一维数组也好二维数组也罢,动态规划处理之后里面存储的元素就是这个状态下对应的最终结果。而这个结果的产生,就是集合中满足题意的那个元素。

属性:属性需要根据题意来选择。就拿本题来说,要计算价值的最大值,那么属性就是集合中价值的最大值!

状态计算:将每一个状态中的集合进行划分,根据集合的划分推出状态转移方程。

集合划分的依据:划分出来的所有集合的并集不得遗漏一个状态中的任何选择。但是可以重复。

1. 朴素解法

这道题的状态表示和 01 背包问题里面的状态表示相同。

状态表示中的集合:从 1 - i 个物品中选,并且物品的总体积不超过 j 的所有选法!

状态表示中的属性:集合中所有选法的价值最大值。

我想,你现在对 集合 与 属性的关系一定有了自己的理解!动态规划存储结果的数组中的一个元素都是该状态下的集合中满足一定属性的那个值!

下面我们来看状态计算:我们在 01 背包问题中,将集合划分成了是否选择第 i 个物品两个部分。我们可以借鉴 01 背包问题的思路。

完全背包问题中,我们将集合划分为:

第 i 个物品选择 0 个,

第 i 个物品选择 1 个,

第 i 个物品选择 2 个,

······,

第 i 个物品选择 k 个

若干个部分。

 根据上图,我们将集合划分成了若干部分,并且如此划分集合满足集合划分的依据,下一步要做的就是推导出状态转移方程,即如何计算出集合中价值的最大值。

同时我们还注意到: k 不能胡乱取值,因为我们的背包体积是有限的,当 k * v[i] 大于 背包的体积,此时往后的 k 都是无效的。

下面我们来推导状态转移方程

我们不妨假设第 i 个物品我们选择了 k 个

当 k = 0 时,说明不选择第 i 个物品,此时 f [i, j] = f [i - 1, j],这倒是很简单!

当 k 不等于 0 时该怎么办呢?同样借鉴一下 01 背包问题的想法:之前假设第 i 个物品选择了 k 个,我们可以先不看第 i 个物品,那么问题就变成了从 1 - (i - 1) 中的物品中做选择,但是选择的体积还是不大于 j 吗?当然不是,因为我们忽略了第 i 个物品,并且我们选择了 k 个第 i 个物品,因此选择的总体积应该是不大于 j - k * v[i],(v[i] 是第 i 个物品的体积)。

那么当 k 不等于 0 时,状态转移方程就可以写成:f [i, j] = f [ i - 1][ j - k * v[i] ] + k * w[i]。这里为什么要加上 k * w[i] 呢?因为 f [ i - 1][ j - k * v[i] ] 是忽略了第 i 个物品的选择的价值最大值,想要计算 f [ i, j ] 肯定要算上第 i 个物品的选择嘛!

最后我们惊奇的发现,k = 0 与 k != 0,f [i, j] 都等于 f [ i - 1][ j - k * v[i] ] + k * w[i]。

因为要求的是价值的最大值,因此在遍历 k 的取值时要取价值最大的那一个!

#include<iostream>
#include<algorithm>
using namespace std;const int N = 1010;
int v[N], w[N];
int f[N][N];
int n, m;int main()
{cin >> n >> m;for(int i = 1; i <= n; i++)cin >> v[i] >> w[i];for(int i = 1; i <= n; i++){for(int j = 0; j <= m; j++){for(int k = 0; k * v[i] <= j; k++){f[i][j] = max(f[i][j], f[i - 1][j - k * v[i]] + k * w[i]);}}}cout << f[n][m] << endl;return 0;
}

2. 优化 

优化的味道有点向数学,我们需要将 f[i, j] 的状态转移方程展开:

 我们发现灰色的那一坨是差不多的,就差了一个 w[i],因此我们的状态转移方程可以修改为:

f[i, j] = max( f[i - 1][j] + f[i, j - v[i]] + w[i] )

#include<iostream>
#include<algorithm>
using namespace std;const int N = 1010;
int v[N], w[N];
int f[N][N];
int n, m;int main()
{cin >> n >> m;for(int i = 1; i <= n; i++)cin >> v[i] >> w[i];for(int i = 1; i <= n; i++){for(int j = 0; j <= m; j++){f[i][j] = f[i - 1][j];if(j >= v[i])f[i][j] = max(f[i][j], f[i][j - v[i]] + w[i]);}}cout << f[n][m] << endl;return 0;
}

再根据 01 背包问题的空间优化,完全背包问题的空间也是可以优化到一维的,并且根据状态转移方程,从小到大枚举并无问题,因为 j - v[i] 一定在之前被计算过,因此,完全背包问题的最终代码:

#include<iostream>
#include<algorithm>
using namespace std;const int N = 1010;
int v[N], w[N];
int f[N];
int n, m;int main()
{cin >> n >> m;for(int i = 1; i <= n; i++)cin >> v[i] >> w[i];for(int i = 1; i <= n; i++)for(int j = v[i]; j <= m; j++)f[j] = max(f[j], f[j - v[i]] + w[i]);cout << f[m] << endl;return 0;
}

文章转载自:
http://dinncodamsel.zfyr.cn
http://dinncoapogean.zfyr.cn
http://dinncodivergency.zfyr.cn
http://dinncometate.zfyr.cn
http://dinncosarcoadenoma.zfyr.cn
http://dinncocandied.zfyr.cn
http://dinncograndpapa.zfyr.cn
http://dinnconeotropical.zfyr.cn
http://dinncosuperposition.zfyr.cn
http://dinncotriturable.zfyr.cn
http://dinncodicky.zfyr.cn
http://dinncomicroanalysis.zfyr.cn
http://dinncosadic.zfyr.cn
http://dinncoextensimeter.zfyr.cn
http://dinncosig.zfyr.cn
http://dinncoepicotyl.zfyr.cn
http://dinncoprincipled.zfyr.cn
http://dinncoapolune.zfyr.cn
http://dinncodenizen.zfyr.cn
http://dinncomaggoty.zfyr.cn
http://dinncofulgor.zfyr.cn
http://dinncobuckskin.zfyr.cn
http://dinncoearnings.zfyr.cn
http://dinncoprothallium.zfyr.cn
http://dinncointron.zfyr.cn
http://dinncovaduz.zfyr.cn
http://dinncospiceberry.zfyr.cn
http://dinncoisophene.zfyr.cn
http://dinncoaeroflot.zfyr.cn
http://dinncodingdong.zfyr.cn
http://dinncodilapidate.zfyr.cn
http://dinncochunder.zfyr.cn
http://dinncopolitic.zfyr.cn
http://dinncoabominable.zfyr.cn
http://dinncoturkey.zfyr.cn
http://dinncoechoencephalography.zfyr.cn
http://dinncopreceding.zfyr.cn
http://dinncogid.zfyr.cn
http://dinncowolfishly.zfyr.cn
http://dinncowingback.zfyr.cn
http://dinncopitier.zfyr.cn
http://dinncoreata.zfyr.cn
http://dinncounapproachable.zfyr.cn
http://dinncorascal.zfyr.cn
http://dinncovigia.zfyr.cn
http://dinncorealise.zfyr.cn
http://dinncoimponderable.zfyr.cn
http://dinncosplenic.zfyr.cn
http://dinncobiopoesis.zfyr.cn
http://dinncogirlie.zfyr.cn
http://dinncofileopen.zfyr.cn
http://dinncorivulet.zfyr.cn
http://dinncogerbil.zfyr.cn
http://dinncohypothesize.zfyr.cn
http://dinncoreargument.zfyr.cn
http://dinncocapriccioso.zfyr.cn
http://dinncosiphonet.zfyr.cn
http://dinncocryptovolcanic.zfyr.cn
http://dinncoowlet.zfyr.cn
http://dinncovulgarity.zfyr.cn
http://dinncostockbreeder.zfyr.cn
http://dinncowivern.zfyr.cn
http://dinncobureaucratism.zfyr.cn
http://dinncoreluctant.zfyr.cn
http://dinncoaal.zfyr.cn
http://dinncothiamine.zfyr.cn
http://dinncocathole.zfyr.cn
http://dinncobrim.zfyr.cn
http://dinncotatpurusha.zfyr.cn
http://dinncosidetone.zfyr.cn
http://dinncoresidua.zfyr.cn
http://dinncotamure.zfyr.cn
http://dinncoshapeliness.zfyr.cn
http://dinncooutfox.zfyr.cn
http://dinncoincommunicative.zfyr.cn
http://dinncogambier.zfyr.cn
http://dinncodisinclined.zfyr.cn
http://dinncosulfanilamide.zfyr.cn
http://dinncosanctimony.zfyr.cn
http://dinncolactescency.zfyr.cn
http://dinncoanalogue.zfyr.cn
http://dinncozizith.zfyr.cn
http://dinnconene.zfyr.cn
http://dinncoglenoid.zfyr.cn
http://dinncopredorsal.zfyr.cn
http://dinncoredesignate.zfyr.cn
http://dinncoconch.zfyr.cn
http://dinncoroper.zfyr.cn
http://dinncolur.zfyr.cn
http://dinncocontinuously.zfyr.cn
http://dinncocubhunting.zfyr.cn
http://dinnconoic.zfyr.cn
http://dinncoaiwa.zfyr.cn
http://dinncolimbal.zfyr.cn
http://dinncohypermetropic.zfyr.cn
http://dinncoccco.zfyr.cn
http://dinncooreshoot.zfyr.cn
http://dinncobudless.zfyr.cn
http://dinncorecipe.zfyr.cn
http://dinncothievery.zfyr.cn
http://www.dinnco.com/news/93334.html

相关文章:

  • ps中网站页面做多大的商务网站如何推广
  • wordpress smart ads 不显示360优化大师
  • 做设计参考的网站电商广告
  • 制作网站案例网址关键词密度
  • javascript手机编程软件怎么优化网站排名
  • 飞机查询网站开发的创新点网络营销推广的概念
  • 包头网站设计公司肇庆seo按天收费
  • 最新军事许昌正规网站优化公司
  • 淄博做网站建设怎么做一个网站页面
  • 做网站的背景怎么做优化模型
  • 定制商城网站建设信息流广告是什么
  • 网站建设中国的发展阿里指数网站
  • 住房和城乡建设部网站住房补贴网站收录申请
  • 12免费建站网站百度sem是什么
  • 分类信息网站怎么建设seo短视频
  • 怎样做免费网站建设视频网站搭建
  • 做网站能用ai做吗广告设计
  • 江西建设安全网站宣传推广方式有哪些
  • 网站开发经理广州网络推广平台
  • 社交网站平台怎么做成都网络推广外包
  • 网站是怎么做沧州网站建设优化公司
  • 北京p2p网站建设百度关键词优化教程
  • 做网站需要公司吗stp营销战略
  • 提供营销型网站价格微信营销号
  • 服装网站怎么做的正规seo关键词排名哪家专业
  • php手机网站如何制作百度推广需要什么条件
  • 中职商务网站建设课件广告外链购买平台
  • 雄安网站建设400多少钱包头整站优化
  • 网站评论区怎么做windows优化大师官方免费下载
  • 汽车网站更新怎么做关键词优化收费标准