背包求助
  • 板块P1776 宝物筛选
  • 楼主Kniqht
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/10/19 05:50
  • 上次更新2023/11/2 12:55:42
查看原帖
背包求助
315205
Kniqht楼主2023/10/19 05:50

为什么我这样写就是对的

for(int j=1;j<m&&j*w<=W;j*=2){
			cnt[++tt]=w*j;
			val[tt]=v*j;
			m-=j;//区别
		}
		if(!m) continue;
		cnt[++tt]=w*m;
		val[tt]=v*m;

这样写就是错的:

for(int j=1;j<m&&j*w<=W;j*=2){
			cnt[++tt]=w*j;
			val[tt]=v*j;
			sum+=j;
		}
		cnt[++tt]=w*(m-sum);
		val[tt]=v*(m-sum);

为什么我感觉都可以。。

2023/10/19 05:50
加载中...