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

OD C卷 - Wonderland游乐园

Wonderland游乐园(200)

  • 游乐园有四种售票方式,分别为一日票,三日票,周票(7天)、月票(30天);
  • 每种票据在时限内可以无限制游玩,如第10天买了一个三日票,则可以在第10/11/12日进行无限制游玩;
  • 根据售票价格数组、游玩日期数组,计算最低消费;

输入描述:
第一行输入售票价格数组costs; 顺序为一日、三日、周票、月票
第二行输入游玩日期(一年中第几天)数组days;数组长度为【1,365】,日期值也在【1,365】,升序排序;
输出描述:
游玩的最低消费

示例1
输入:
5 14 30 100
1 3 5 20 21 200 202 230
输出:
40

思路:

  • 动态规划
  • 对于每个游玩的日期,前一天买一日票,前三天买三日票,前一个星期买周票,前一个月买月票,所有方案中取最小成本;
  • i 遍历1-365 的所有日期
  • j 表示days数组的索引

costs = list(map(int, input().strip().split()))
days = list(map(int, input().strip().split()))# 假设成本无穷大
dp = [float('inf') for _ in range(370)]
dp[0] = 0j = 0 # 游玩日期数组索引 第
for i in range(1, 366): # i 第1-365之间的值if j < len(days) and i == days[j]:dp[i] = min(dp[i], dp[max(0, i - 1)] + costs[0])dp[i] = min(dp[i], dp[max(0, i - 3)] + costs[1])dp[i] = min(dp[i], dp[max(0, i - 7)] + costs[2])dp[i] = min(dp[i], dp[max(0, i - 30)] + costs[3])j += 1else:dp[i] = dp[i - 1]print(dp)
print(dp[365]) # 第365天

 


http://www.mrgr.cn/news/8029.html

相关文章:

  • 阵列信号处理2_阵列信号最优处理常用准则(CSDN_20240825)
  • 大话C语言:第46篇 C语言项目工程化之Makefile详解
  • 编程路上的“迷宫逃脱”:从Bug堆到算法之巅的奇妙之旅
  • 3.4-CoroutineScope/CoroutineContext:coroutineScope() 和 supervisorScope()
  • hackit 2018
  • QT上位机学习路线(C++)
  • PHP反序列化二
  • ArcGIS Pro基础:如何将数据和引用地图样式一起打包分享
  • Golang | Leetcode Golang题解之第367题有效的完全平方数
  • rust api接口开发(以登陆和中间件鉴权为例)
  • MidJourney付费失败的原因以及失败后如何取消或续订(文末附MidJourney,GPT-4o教程)
  • 如何在Spring Boot应用中加载和使用TensorFlow模型
  • HTML5 浏览器支持
  • 如何使用ssm实现基于JAVA的网上药品售卖系统
  • java通过JDBC连接mysql和postgres数据库实现读写数据
  • 利用API返回值实现商品信息的自动化更新
  • git提交项目,报403无权限
  • 福特汽车削减电动车计划,聚焦成本控制
  • 支持2.4G频秒变符合GB42590的标准的飞行器【无人机GB42590发射端】
  • Springboot统一给redis缓存的Key加前缀