感觉自己好low啊
查看原帖
感觉自己好low啊
890321
mooktian楼主2024/5/24 11:12

憋了半天,憋了一个完全背包做法,再去看题解,心态炸裂。

#include <bits/stdc++.h>
#define ll long long
using namespace std;
//完全背包做法
int n;
int w[2] = {4,5};//两个物品重量是4,5
int v[2] = {0,1};//价值是0和1
int f[1000005],g[1000005];
int main(){
cin >> n;
memset(f,0x80,sizeof(f));//初始化
f[0] = 0 , g[0] = 1;
for(int i = 0;i < 2;i++) {
	for(int j = w[i];j <= n;j++) {
		if(f[j-w[i]] >= 0 && f[j] <= f[j-w[i]] + v[i]) {//转移
			f[j] = f[j-w[i]] + v[i];
			g[j]+= g[j-w[i]]; 
		}
	}
}
cout << g[n];
return 0;
}

2024/5/24 11:12
加载中...