大大大水题,可以贪心,直接打贪心也行,dp更优雅.
完全背包比模板裸的题
你先跑一遍完全背包,在n*m~n*m-k中min_ans
#include<iostream>
#include<cstring>
using namespace std;
int dp[100*100+5];
int main()
{
int c,d,n,m,k;
cin>>c>>d>>n>>m>>k;
memset(dp,-0xff,sizeof(dp));
dp[0]=0;
for(int j=1;j<=n*m;j++)
{
if(j-n>=0)
dp[j]=min(dp[j],min(dp[j-n]+c,dp[j-1]+d));
else
dp[j]=min(dp[j],dp[j-1]+d);
}
int ans=9999999;
for(int i=n*m-k;i<=n*m;i++)
ans=min(dp[i],ans);
cout<<ans;
}