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

做新媒体和网站产品市场推广方案

做新媒体和网站,产品市场推广方案,网站标题写什么作用是什么意思,咨询公司靠什么盈利1. 01 背包(每种物品只能选一次) 思路: 每个物品只能取 0 次或 1 次,求在容量限制内的最大价值。 定义 dp[j] 表示容量 j 时的最大价值。 遍历物品,从后向前遍历容量,防止物品被重复使用。 状态转移方程…

1. 01 背包(每种物品只能选一次)

思路:

  • 每个物品只能取 0 次或 1 次,求在容量限制内的最大价值。

  • 定义 dp[j] 表示容量 j 时的最大价值。

  • 遍历物品,从后向前遍历容量,防止物品被重复使用。

  • 状态转移方程: dp[j] = max(dp[j], dp[j - w[i]] + v[i])

代码模板:

for (int i = 0; i < N; i++) {  // 遍历物品for (int j = V; j >= w[i]; j--) {  // 倒序遍历背包容量dp[j] = Math.max(dp[j], dp[j - w[i]] + v[i]);}
}

示例: 输入:

3 5
2 3
1 2
3 4

计算过程:

  1. 初始化 dp = [0, 0, 0, 0, 0, 0]

  2. 处理第一个物品(重量2,价值3):

    • dp[5] = max(dp[5], dp[3] + 3) = 3

    • dp[4] = max(dp[4], dp[2] + 3) = 3

    • dp[3] = max(dp[3], dp[1] + 3) = 3

    • dp[2] = max(dp[2], dp[0] + 3) = 3

  3. 处理第二个物品(重量1,价值2),依次更新。

  4. 处理第三个物品(重量3,价值4),依次更新。

最终 dp[5] = 5


2. 完全背包(每种物品可以选无限次)

思路:

  • 每个物品可以取无限次。

  • 仍然定义 dp[j],但这次要正序遍历容量。

  • 状态转移方程: dp[j] = max(dp[j], dp[j - w[i]] + v[i])

代码模板:

for (int i = 0; i < N; i++) {  // 遍历物品for (int j = w[i]; j <= V; j++) {  // 正序遍历背包容量dp[j] = Math.max(dp[j], dp[j - w[i]] + v[i]);}
}

示例: 输入:

2 4
1 2
2 4

计算过程:

  1. 初始化 dp = [0, 0, 0, 0, 0]

  2. 处理第一个物品(重量1,价值2):

    • dp[1] = 2, dp[2] = 4, dp[3] = 6, dp[4] = 8

  3. 处理第二个物品(重量2,价值4):

    • dp[2] = 4(不变),dp[3] = 6(不变),dp[4] = 8(不变)

最终 dp[4] = 8


3. 多重背包(每种物品最多选 Si 次)

思路:

  • 直接按照 01 背包 方式处理的时间复杂度较高。

  • 使用 二进制拆分优化,将 s[i] 个物品拆分成若干个 2^k 份,使得 2^0 + 2^1 + ... 覆盖 s[i]

  • 状态转移方程: dp[j] = max(dp[j], dp[j - k * w[i]] + k * v[i])

代码模板(使用二进制优化):

for (int i = 0; i < N; i++) {  // 遍历物品int count = s[i];for (int k = 1; count > 0; k *= 2) {  // 二进制拆分int num = Math.min(k, count);count -= num;int weight = num * w[i];int value = num * v[i];for (int j = V; j >= weight; j--) {  // 01 背包处理dp[j] = Math.max(dp[j], dp[j - weight] + value);}}
}

示例: 输入:

3 10
2 3 3
3 4 2
5 6 2

计算过程(使用二进制优化拆分):

  1. 物品1(重量2,价值3,最多选3次)拆分成 1, 2

    • dp[10] = max(dp[10], dp[8] + 3)

    • dp[8] = max(dp[8], dp[6] + 3)

    • 依次更新 dp[2] = 3, dp[4] = 6, dp[6] = 9

  2. 物品2(重量3,价值4,最多选2次)拆分成 1, 1

    • 依次更新 dp[3] = 4, dp[6] = 8, dp[9] = 12

  3. 物品3(重量5,价值6,最多选2次)拆分成 1, 1

    • dp[5] = 6, dp[10] = 12

最终 dp[10] = 12


总结:

  • 01 背包: 只能选 0 或 1 次,倒序遍历容量。

  • 完全背包: 可选无限次,正序遍历容量。

  • 多重背包: 每种物品最多选 Si 次,二进制拆分优化

http://www.dtcms.com/wzjs/71703.html

相关文章:

  • 如何建设网站zy258公司网址
  • 商城网站制作 价格优化方案模板
  • 帝国cms 7.2 门户网站模版安徽网站关键字优化
  • 佛山专业做淘宝网站博客网站seo
  • 商务网站管理的主要内容数据管理免费个人网站空间
  • 广宁县住房和城乡建设局网站品牌推广和品牌营销
  • 最大网络公司排名电池优化大师下载
  • 网站建设毕业设计开题ppt快速排名网站
  • 沈阳微网站建设腾讯中国联通
  • 网站建设招标方式小吃培训2000元学6项
  • 学做前端的网站排名轻松seo 网站
  • 饰品网站设计方案营销型网站建设ppt
  • 网站没排名要怎么做乔拓云建站平台
  • 高品质的网站开发seo全网营销的方式
  • 苏州网站建设找思创优化方案英语
  • 网站建设 江苏搜索量用什么工具查询
  • 做网站什么笔记本好用5118和百度指数
  • 日本室内设计网站推荐seo网站优化排名
  • 小学学校网站建设计划书超级搜索引擎
  • 弱电工程公司网站怎么做友情链接交换平台有哪些
  • 做视频网站收费侵权吗关键词广告
  • 怎样做网站外链seo搜索引擎优化软件
  • 常平做网站公司电商平台推广公司
  • 仿70网站分类目录源码竞价托管外包
  • u nas 建设网站网站优化怎么做
  • 无锡品牌网站建设网站线上营销手段
  • 专业免费网站建设一般收录批量查询
  • 泉州免费建站百度推广开户流程
  • 做擦边球丝袜网站seo实战培训视频
  • 南山做网站价格宁波seo网络推广软件系统