找不到错了
查看原帖
找不到错了
335094
Lucifero楼主2020/9/26 16:35
#include <bits/stdc++.h>
using namespace std;
struct Bag
{
	int wei,val;
}a[400];
int l[100],r[100];
int f[10000][100],sum[100],N,T,K;
int main()
{
	//背包
	int i,j,k;
	scanf("%d%d%d",&K,&T,&N);
	for(i=1;i<=N;i++) scanf("%d%d",&a[i].wei,&a[i].val);
	for(i=1;i<=N;i++)
		for(j=T;j>=a[i].wei;j--)
		{
			for(k=1;k<=K;k++)
			{
				l[k]=f[j][k];
				r[k]=f[j-a[i].wei][k]+a[i].val;
			}
			l[K+1]=r[K+1]=-1;
			int x=1,y=1,z=1;
			while((x<=K || y<=K) && z<=K)
			{
				f[j][z]=(l[x]>r[y])?l[x++]:r[y++];
				if (f[j][z]!=f[j][z-1]) z++;
			}
		}
	for(i=1;i<=K;i++)
		sum[i]=sum[i-1]+f[T][i];
	printf("%d",sum[K]);
}
2020/9/26 16:35
加载中...