这题可以不二分,分数规划
查看原帖
这题可以不二分,分数规划
501947
DengDuck鄧德楼主2023/10/29 20:14

给个实现

我待会写个题解,加上去

#include<bits/stdc++.h>
#define LL long long 
using namespace std;
const LL N=255;
const LL M=1005;
LL n,m,f[N][M],ans;
struct node
{
	LL a,b;
}a[N];
bool cmp(node x,node y)
{
	return x.a<y.a;
}
int main()
{
	scanf("%lld%lld",&n,&m);
	for(int i=1;i<=n;i++)
	{
		scanf("%lld%lld",&a[i].a,&a[i].b);
	}
	memset(f,-127,sizeof(f));
	f[0][0]=0;
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<=m;j++)
		{
			f[i][j]=f[i-1][j];
			if(j-a[i].a>=0)f[i][j]=max(f[i][j],f[i-1][j-a[i].a]+a[i].b);
			if(j+a[i].a>=m)ans=max(ans,(f[i-1][j]+a[i].b)*1000/(j+a[i].a));
		}
	}
	printf("%lld",ans);
}
2023/10/29 20:14
加载中...