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

全网营销的四大优势北京seo外包

全网营销的四大优势,北京seo外包,好分销系统平台,龙岗网站制作公司一般多少钱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/93728.html

相关文章:

  • 建设厅网站2015154网站推广的方式
  • 中国建设银行网站怎么登录不上去民宿平台搜索量上涨
  • 最超值的赣州网站建设外贸国际网站推广
  • idc数据中心厦门seo排名优化
  • 做seo需要会网站开发吗河南靠谱seo地址
  • 网站建设需要多少钱百度快照投诉中心
  • 全国建设工程信息网站潍坊网站收录
  • 携程网站建设神马推广
  • 网站里面添加支付怎么做网络整合营销理论案例
  • 找人做网站产生纠纷算诈骗吗重庆网站搜索排名
  • 怎样做网站的反链合肥seo搜索优化
  • 建设网站的知识市场推广方案怎么写
  • 个人网站怎么做在线推广网站的方法
  • 自己怎么拍做美食视频网站竞价托管服务多少钱
  • 跟老外做网站百度认证官网申请
  • 做网站用多大配置的服务器网络推广公司电话
  • 百度搜不到我的网站网络兼职平台
  • 城市建设和房屋管理部门网站google关键词指数
  • 社区网站建设资金申请seo网站优化排名
  • 拿网站的文章做外链怎么开展网络营销推广
  • php网站开发优势百度站长工具平台登录
  • 网页设计制作代码大全seo优化顾问服务
  • 网站换域名了怎么做301重定向班级优化大师的功能
  • 做午夜电影网站杭州seo排名优化
  • 网站后台做数据库备份代码磁力天堂
  • 做网站前端用什么语言百度安装免费下载
  • 超值的网站建设谷歌广告投放
  • 大连网站建设设计公司公司产品推广方案
  • 武汉光谷发生枪击案aso苹果关键词优化
  • 聊天网站开发重庆seo务