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

983. 最低票价

Powered by:NEFU AB-IN

Link

文章目录

  • 983. 最低票价
    • 题意
    • 思路
    • 代码

983. 最低票价

题意

在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。

火车票有 三种不同的销售方式 :

一张 为期一天 的通行证售价为 costs[0] 美元;
一张 为期七天 的通行证售价为 costs[1] 美元;
一张 为期三十天 的通行证售价为 costs[2] 美元。
通行证允许数天无限制的旅行。 例如,如果我们在第 2 天获得一张 为期 7 天 的通行证,那么我们可以连着旅行 7 天:第 2 天、第 3 天、第 4 天、第 5 天、第 6 天、第 7 天和第 8 天。

返回 你想要完成在给定的列表 days 中列出的每一天的旅行所需要的最低消费 。

思路

灵神的思路:https://leetcode.cn/problems/minimum-cost-for-tickets/solutions/2936177/jiao-ni-yi-bu-bu-si-kao-dpcong-ji-yi-hua-tkw4/?envType=daily-question&envId=2024-10-01

我的思路麻烦,首先是定义两个变量,一个是多少天,一个是下标到哪了

每到一个状态,判断是否加cost的标准,就是二分找到的下一个index的坐标,比当前的大
比如 days = [1, 5]
day = 2时,下标为1(因为比days[0] = 1大),所以要加cost[0],算是days[0]的门票,dfs(index = 1, day = 3)
day = 3时,下标还是为1,这时候就不加cost了

代码

# 3.8.9 import
import bisect
from collections import Counter, defaultdict, deque
from datetime import datetime, timedelta
from functools import lru_cache, reduce
from heapq import heapify, heappop, heappush, nlargest, nsmallest
from itertools import combinations, compress, permutations, starmap, tee
from math import ceil, comb, fabs, floor, gcd, hypot, log, perm, sqrt
from string import ascii_lowercase, ascii_uppercase
from sys import exit, setrecursionlimit, stdin
from typing import Any, Callable, Dict, List, Optional, Tuple, TypeVar# Constants
TYPE = TypeVar('TYPE')
N = int(2e5 + 10)
M = int(20)
INF = int(1e12)
OFFSET = int(100)
MOD = int(1e9 + 7)# Set recursion limit
setrecursionlimit(int(2e9))class Arr:array = staticmethod(lambda x=0, size=N: [x() if callable(x) else x for _ in range(size)])array2d = staticmethod(lambda x=0, rows=N, cols=M: [Arr.array(x, cols) for _ in range(rows)])graph = staticmethod(lambda size=N: [[] for _ in range(size)])class Math:max = staticmethod(lambda a, b: a if a > b else b)min = staticmethod(lambda a, b: a if a < b else b)class Std:pass# ————————————————————— Division line ——————————————————————class Solution:def mincostTickets(self, days: List[int], costs: List[int]) -> int:@lru_cache(None)def dfs(index: int, day: int):if index == len(days):return 0day_1 = day + 1day_7 = day + 7day_30 = day + 30ans = INFindex_1 = bisect.bisect_left(days, day_1)index_7 = bisect.bisect_left(days, day_7)index_30 = bisect.bisect_left(days, day_30)ans = Math.min(ans, dfs(index_1, day_1) + (costs[0] if index_1 > index else 0))ans = Math.min(ans, dfs(index_7, day_7) + (costs[1] if index_7 > index else 0))ans = Math.min(ans, dfs(index_30, day_30) + (costs[2] if index_30 > index else 0))return ansreturn dfs(0, days[0])

相关文章:

  • PHP读取文件内容的几种方法和函数
  • django使用笔记6--docker部署
  • 破局汽车智能化浪潮:Tire 1供应商的网络优化与升级策略
  • 在Linux中进行OpenSSH升级(编译安装在openssh目录)
  • C语言系列4——指针与数组(1)
  • 【数据库】 MongoDB 用户分配新的角色和权限
  • 从零开始Ubuntu24.04上Docker构建自动化部署(三)Docker安装Nginx
  • Cannon-es.js之HingeConstraint铰链约束案例
  • leetcode163.缺失的区间,模拟
  • 【算法】堆排之LCR 159.库存管理 Ⅲ(easy)
  • Python Web 与量子计算
  • css的页面布局属性
  • 65.【C语言】联合体
  • Databend 实现高效实时查询:深入解读 Dictionary 功能
  • 对于基础汇编的趣味认识
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JavaScript 基础知识 - 入门篇(一)
  • Javascript 原型链
  • Java比较器对数组,集合排序
  • Laravel Mix运行时关于es2015报错解决方案
  • miaov-React 最佳入门
  • PaddlePaddle-GitHub的正确打开姿势
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • scrapy学习之路4(itemloder的使用)
  • spring学习第二天
  • STAR法则
  • 官方解决所有 npm 全局安装权限问题
  • 京东美团研发面经
  • 浏览器缓存机制分析
  • 漂亮刷新控件-iOS
  • 前端性能优化--懒加载和预加载
  • 通过几道题目学习二叉搜索树
  • 如何在招聘中考核.NET架构师
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​TypeScript都不会用,也敢说会前端?
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (1)(1.13) SiK无线电高级配置(六)
  • (苍穹外卖)day03菜品管理
  • (多级缓存)缓存同步
  • (附源码)ssm码农论坛 毕业设计 231126
  • (附源码)计算机毕业设计高校学生选课系统
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (三)Honghu Cloud云架构一定时调度平台
  • (四)图像的%2线性拉伸
  • (算法)前K大的和
  • (原)Matlab的svmtrain和svmclassify
  • (转)memcache、redis缓存
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)可以带来幸福的一本书
  • .Net core 6.0 升8.0
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON