#include #include #include using namespace std; const int N=1010,M=5010; int n,m,k; int f[M][55]; struct node{ int a,b; }q[N]; bool cmp(node a,node b){ return a.b<b.b; } int main(){ cin>>n>>m>>k; for(int i=1;i<=n;i++){ cin>>q[i].a>>q[i].b; q[i].a=min(q[i].a,q[i].b); } sort(q+1,q+n+1,cmp); memset(f,0x3f,sizeof f); f[0][0]=0; for(int i=1;i<=n;i++){ for(int j=0;j<=m;j++){ for(int u=0;u<=k;u++){ if(j>=q[i].a&&u<k) f[j][u+1]=min(f[j][u+1],f[j-q[i].a][u]+q[i].b); f[j][u]=min(f[j][u],f[j][u]+q[i].a); } } } int cnt=0; for(int i=0;i<=m;i++){ for(int j=0;j<=k;j++){ if(f[i][j]<=m){ cnt=max(cnt,j); } } } cout<<cnt<<' '<<f[m][cnt]<<endl; return 0; }

C++实现商品购买优化算法:最大化数量并最小化花费

原文地址: https://www.cveoy.top/t/topic/lHRA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录