20求调
查看原帖
20求调
1071829
ssssbbbbbb楼主2024/7/5 19:14
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=1000000+10;
int dp[maxn],t,n,ans;
struct node{
	int a,b,c;
}cd[100];
bool cmp(node g,node q){
	return g.c*q.b>q.c*g.b;
}
signed main(){
	cin>>t>>n;
	for(int i=1;i<=n;i++) cin>>cd[i].a;
	for(int i=1;i<=n;i++) cin>>cd[i].b;
	for(int i=1;i<=n;i++) cin>>cd[i].c;
	sort(cd+1,cd+1+n,cmp);
	for(int i=1;i<=n;i++){
		for(int j=t;j>=cd[i].c;j--) dp[j]=max(dp[j],dp[j-cd[i].c]+cd[i].a-j*cd[i].b);
	}
	for(int i=1;i<=t;i++) ans=max(ans,dp[i]);
	cout<<ans<<endl;
	return 0;
}
2024/7/5 19:14
加载中...