20求调

P1417 烹调方案

ssssbbbbbb @ 2024-07-05 19:14: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;
}

by FarmerDrone @ 2024-09-30 12:46:30

cmp应该写小于吧


|