投资的最大效益

题目地址

标准完全背包

f[i]=max(f[i],f[iv[i]]+w[i])

思路见注释:


#include <iostream>
#include <cstring>

using namespace std;

const int N = 10000,M = 45;
int w[M],v[M],f[N];
int n,s,d;

int main()
{
    scanf("%d%d%d",&s,&n,&d);

    for(int i = 1 ; i <= d ; i ++ )
    scanf("%d%d",&v[i],&w[i]);
   
    for(int i = 1 ; i <= n ; i ++ )//用来更新本金
    {
        int m =  s / 1000;//a>=1000所以本金除1000无影响
        for(int j = 1 ; j <= d ; j ++ )
        {
            int mk = v[j]/1000;//本金除1000,所以投资额也要除1000
            for(int k = mk; k <= m ; k ++  )
            if(k >= mk) f[k] = max(f[k],f[k - mk] + w[j]);
        }
        s += f[m];
        memset(f,0,sizeof f);
    }
    printf("%d",s);

}
posted @   Erfu  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示