CF189A Cut Ribbon(完全背包--之背包必须刚好装满题型)

思路:

完全背包裸体+特殊点处理(背包必须刚好装满)

ACcode:


#include
using namespace std;
#define int long long
const int N=4e3+10;
int n,a,b,c,f[N],w[5];
void solve() {
	cin>>n>>w[1]>>w[2]>>w[3];
	//本题不同的就是背包最后必须装满 
	//初始化 
	memset(f,-1,sizeof f);
	f[0]=0;
	//完全背包 
	for(int i=1; i<=3; i++) {
		for(int j=w[i]; j<=n; j++) {
			if(f[j-w[i]]!=-1) {//**
				f[j]=max(f[j],f[j-w[i]]+1);
			}
		}
	}
	cout<>t;
	while(t--) {
		solve();
	}
	return 0;
}




over~

你可能感兴趣的:(算法,c++,完全背包)