妖火之灵 @ 2019-09-20 21:21:40
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;
int n,t;
struct food
{
long long a,b,c;
}m[55];
long long f[100005];
bool cmp(food a,food b)
{
return a.c*b.b<a.b*b.c;
}
int main()
{
long long i,j,k;
cin>>t>>n;
for(i=1;i<=n;i++) cin>>m[i].a;
for(i=1;i<=n;i++) cin>>m[i].b;
for(i=1;i<=n;i++) cin>>m[i].c;
sort(m+1,m+n+1,cmp);
f[0]=0;
for(i=1;i<=n;i++)
for(j=t;j-m[i].c>=0;j--)
{
f[j]=max(f[j],f[j-m[i].c]+m[i].a-m[i].b*j);
}
long long s=0;
for(i=1;i<=t;i++)
s=max(s,f[i]);
cout<<s;
return 0;
}
将此代码中的m数组改为100005便AC
struct food
{
long long a,b,c;
}m[100005];
求大佬指教为什么,n的数量不是小于50吗?
by 氢离子已超标 @ 2020-01-18 10:29:05
和你一毛一样,我也不晓得为什么
by 氢离子已超标 @ 2020-01-18 10:29:55
总算知道哪里错了