求助
  • 板块灌水区
  • 楼主仗剑行
  • 当前回复1
  • 已保存回复1
  • 发布时间2020/7/23 23:11
  • 上次更新2023/11/6 22:27:34
查看原帖
求助
280327
仗剑行楼主2020/7/23 23:11

来自采药的某题解

for(int i=1;i<=n;i++)
{
	for(int j=t;j>=w[i];j--){ //t为背包总容量
		}
}

为什么要从t开始枚举呢?
因为我们的每个物品只能放一次,而f[j]要靠f[j-w[j]]的价值求出来,如果我们先枚举f[j]再枚举f[j]以后的内容,就会被f[j]影响到,也就相当于第i件物品放了两次或以上(这涉及到完全背包问题,需要了解的可以去百度一下,或者做一下P1616)。所以我们从t开始枚举,以免影响到之前的f[i]。

这段话没有看懂aa

为什么要从t开始枚举呢?
因为我们的每个物品只能放一次,而f[j]要靠f[j-w[j]]的价值求出来,如果我们先枚举f[j]再枚举f[j]以后的内容,就会被f[j]影响到,也就相当于第i件物品放了两次或以上(这涉及到完全背包问题,需要了解的可以去百度一下,或者做一下P1616)。所以我们从t开始枚举,以免影响到之前的f[i]。

所以到底为什么要从t开始嗷

2020/7/23 23:11
加载中...