当前位置: 首页 > article >正文

OD E卷 - 实现 【虚拟理财游戏】

题目

在一款虚拟游戏中生活,必须进行投资以增强在虚拟游戏中的资产,避免被淘汰,现在有一家Bank,提供理财产品M个,风险及投资回报不同,你有N(元)进行投资,能接受的总风险值为X。你要在可接受范围内选择最优的投资方式获取最大回报。
备注:

  • 每项投资风险值相加为总风险值;
  • 最多只能投资两个理财产品;
  • 最小单位为整数;
  • 投资额 * 回报率 = 投资回报;

输入描述:
第一行:产品数【1,20】,总投资额(整数,【1,100001】),可接受的总风险(整数,【1,200】)
第二行:产品投资回报率序列(整数,【1,100】)
第三行:产品风险值序列(整数,【1,100】)
第四行:最大投资额序列(整数,【1,1000】)
输出描述:
最优方案时,每个产品的投资额序列

示例:
输入:
5 100 10
10 20 30 40 50
3 4 5 6 10
20 30 20 40 30
输出:
0 30 0 40 0

 

解题代码

因为只有投资一种产品、投资两种产品 两种情况,暴力求解即可;


params = [int(x) for x in input().strip().split()]
m = params[0]  # 产品数
n = params[1]  # 钱数
x = params[2]  # 能接受的最大风险

# 回报率
back_rate = [int(x) for x in input().strip().split()]
# 风险
risks = [int(x) for x in input().strip().split()]
# max_invest
max_invest = [int(x) for x in input().strip().split()]

# 每个产品的最大回报值
max_earns = [max_invest[i] * back_rate[i] for i in range(m)]
max_value = 0

# 暴力求解
# 选1个产品时的最大回报
target = 0
i = 0
while i < m:
    # 风险满足 且 投资的钱满足
    if risks[i] <= x and max_invest[i] <= n:
        if max_earns[i] > max_value:
            max_value = max_earns[i]
            target = i  # 投资的产品索引
    i += 1

# 选两个产品的最大回报
k = 0
a = 0
b = 0
flag = False  # 标志选两个产品时是否比一个产品时获取回报大
while k < m - 1:
    for j in range(k + 1, m):
        if risks[k] + risks[j] <= x and max_invest[k] + max_invest[j] <= n:
            if max_earns[k] + max_earns[j] > max_value:
                max_value = max_earns[k] + max_earns[j]
                a = k
                b = j
                flag = True
    k += 1

output_str = ""
if flag:
    for j in range(m):
        if j == a:
            output_str += str(max_invest[j]) + " "
        elif j == b:
            output_str += str(max_invest[j]) + " "
        else:
            output_str += str(0) + " "
else:
    for j in range(m):
        if j == target:
            output_str += str(max_invest[j]) + " "
        else:
            output_str += str(0) + " "

print(output_str[:-1]) 


http://www.kler.cn/a/418801.html

相关文章:

  • 大语言模型压缩技术;推理优化技术;SparseGPT算法;GPTQ算法
  • 数据结构-最小生成树
  • 不同类型转换
  • Shell脚本小练习
  • 电子应用设计方案-33:智能AI投影仪系统方案设计
  • 【AI技术赋能有限元分析应用实践】Abaqus有限元分析到深度学习方法应用全过程——汽车刹车片热力耦合分析
  • 【青牛科技】电动工具调速控制电路芯片GS069介绍
  • 安装Fcitx5输入框架和输入法自动部署脚本(来自Mark24)-Ubuntu通用
  • D82【python 接口自动化学习】- pytest基础用法
  • 多线程篇-8--线程安全(死锁,常用保障安全的方法,安全容器,原子类,Fork/Join框架等)
  • windows下安装node.js和pnpm
  • YOLO 标注工具 AutoLabel 支持 win mac linux
  • 【Electron学习笔记(三)】Electron的主进程和渲染进程
  • 【论文复现】从零开始搭建图像去雾神经网络
  • 【软考速通笔记】系统架构设计师⑧——系统质量属性与架构评估
  • 14 - Java 面向对象(中级)
  • SqlServer REVERSE字符串值的逆序排序函数
  • 框架学习07 - SpringMVC 其他功能实现
  • Cisco WebEx 数据平台:统一 Trino、Pinot、Iceberg 及 Kyuubi,探索 Apache Doris 在 Cisco 的改造实践
  • 线性表-链式描述(C++)
  • 【联表查询】.NET开源 ORM 框架 SqlSugar 系列
  • 【C语言】扫雷游戏(一)
  • 火山引擎VeDI在AI+BI领域的演进与实践
  • Web开发基础学习——理解React组件中的根节点
  • 【计网不挂科】计算机网络——<34道经典简述题>特训
  • Vue.js 深入探索:自定义指令与插件开发