人間夜行

一切の有為の法 夢幻泡影の如し

RQNOJ 162 奖金

| 评论

//这是一道完全背包。与0/1背包不同,空间优化后不必逆序,
//以实现多次选取。
//此外本题要求装满,所以f[j](j!=0)初始化为负无限大。
//关于“装满”,参见jake1036的《01背包问题总结(一)》。
#include <stdio.h>
#include <limits.h>
int main()
{
	long int n,m,p[10001],v[10002],f[10001];
	scanf("%ld%ld",&n,&m);
	int i,j;
	for(i=1;i<=n;i++) scanf("%ld%ld",&p[i],&v[i]);
	for(j=1;j<=m;j++) f[j]=LONG_MIN;
	for(i=1;i<=n;i++)
		for(j=p[i];j<=m;j++)
			if(f[j-p[i]]+v[i]>f[j]) f[j]=f[j-p[i]]+v[i];
	printf("%ld",f[m]);
	return 0;
}

评论