获得徽章 0
- #刷题交流#
问题:
问题描述
小R正在计划一次从地点A到地点B的徒步旅行,总路程需要 N 天。为了在旅途中保持充足的能量,小R每天必须消耗1份食物。幸运的是,小R在路途中每天都会经过一个补给站,可以先购买完食物后再消耗今天的1份食物。然而,每个补给站的食物每份的价格可能不同,并且小R在购买完食物后最多只能同时携带 K 份食物。
现在,小R希望在保证每天食物消耗的前提下,以最小的花费完成这次徒步旅行。你能帮助小R计算出最低的花费是多少吗?
思路这道题目综合运用了双端队列(deque)数据结构和单调队列算法知识,是一道典型的动态规划与滑动窗口结合的问题,适合练习数据结构与算法综合应用的同学。
思路说明
题目要求在给定的天数 N 和最大携带食物量 K 的限制下,计算出完成徒步旅行所需的最小花费。每天经过的补给站食物价格不同,且每天必须消耗1份食物。我们可以通过维护一个单调递增的双端队列来记录当前窗口内的最小价格,从而在每次购买食物时选择最便宜的选项。通过滑动窗口的方式,逐步计算出每天的最小花费,最终得到总的最小花费。
解题过程
初始化:创建一个双端队列 mins 用于存储当前窗口内的最小价格及其对应的天数。初始化结果 result 为0。
遍历每一天:
维护单调队列:在每次遍历中,首先检查队列 mins 的末尾元素,如果其价格大于当前天的价格,则将其弹出,直到队列为空或队列末尾元素的价格小于等于当前天的价格。然后将当前天的价格和天数加入队列。
滑动窗口:检查队列 mins 的头部元素,如果其对应的天数已经不在当前窗口内(即 mins[0][0] <= j - k),则将其弹出。
计算花费:将当前窗口内的最小价格(即队列头部元素的价格)累加到 result 中。
返回结果:遍历结束后,result 即为完成徒步旅行的最小花费。展开评论2 - #豆包Marscode 体验官# 体验 MarsCode 开发,Rust 项目体验。完成生成随机字符串和像素图片的功能。
思路:
1.通过随机数能力遍历指定次数,从收集的字符池中取手机字符
2. 基于 image 库完成操作像素并输出图片的能力
49 - 53
![[耶]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_72.04f3881.png)
![[白眼的狗]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_98.9f6d4ad.png)
![[尬笑]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_59.8a63cb5.png)
![[吐舌]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_95.6b0752f.png)
![[大笑]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_55.74ed629.png)
![[色]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_3.41d9a9a.png)