【每日一题】8月4日题目精讲—购物

题号 NC14526
名称 购物
来源 牛客练习赛7
戳我进入往期每日一题汇总贴~
往期每日一题二期题单

图片说明

如果你在题库做题时遇到了喜欢的题目,欢迎推荐给邓老师~ 点击查看详情

题解

先说dp做法:
首先我们每天肯定都是按照价格从低到高买糖果,所以决策只需要关注当前天买了多少个。
f[i][j]代表前i天已经买了j颗糖果的最小花费,枚举第i天买了多少糖果。
f[i][j] = min(f[i-1][k] + sum[i][j-k] + (j-k)*(j-k)); (k从i-m到i-1枚举)
但是事实上可以更简单:
因为每天我们都按照价格从低到高买糖果,排完序之后如果我们第i天买了第x个糖果,前
x-1个是肯定要买的——只买前x-1个糖果花了sum[i][x-1] + (x-1)^2的钱,买前x个糖果花sum[i][x] + x^2的钱,相减就会发现买第x个糖果的钱为a[i][x]+2x-1(相当于把附加的钱按照贡献分给每个糖果),其实只和他自己的价格以及在自己那一天是第几个买有关,和他前面的糖果都是多少钱无关,且原来排在花钱少的糖果最终花钱还是少(如果我们选了第x个糖果那么他前面的糖果肯定都选上了)。这样,最后吃掉的n个糖果一定是a[i][x]+2x-1最小的n个(真正买的时候不是按照大小关系顺序而是按照日期),所以直接贪心就可以了——先把每天的糖果排序,排好之后给他们加上排位带来的附加价格(2x-1),然后按照加上了附加价格之后的价格把每天可以买的糖果放入容器里,再把容器中价格最小的糖果拿出来(这个容器可以用堆也可以用set等)。
这里说明一下能用贪心的原因:
附加价格不会影响原来的选择顺序,对于本题来说即越排在后面附加得越多(如果原来的选择顺序是从大到小,那么自然要保证前面的增量大)
每天的选择独立,昨天选了几个和今天的选择没关系(如果题面要求每天必须比前一天选得多之类的自然只能dp了)

活动奖励:

在牛客博客中写出题解,并回复地址
审核通过可获得(依据题目难度和题解的内容而定)

本道题目9月1日中午12:00之前写的题解有获得牛币资格~

.牛币兑换中心

牛客博客开通方式

  1. 如何开通牛客博客:https://www.nowcoder.com/discuss/202952
  2. 如何使用博客搬家功能:进入博客--->设置--->底部博客搬家
  3. 如果你对牛客博客有任何意见或建议:牛客博客意见反馈专贴
全部评论
有个复杂度更优的做法 https://blog.nowcoder.net/n/aec8d532559a4fc4bd1561da0ec16848
1 回复 分享
发布于 2020-08-04 08:37
https://blog.nowcoder.net/n/caa3bf6d6f2e40db83616bbca2d24e09
点赞 回复 分享
发布于 2020-08-22 21:41
https://blog.nowcoder.net/n/93a36d7c59284aec8e941ffb094064e0
点赞 回复 分享
发布于 2020-08-19 22:29
https://blog.nowcoder.net/n/f0a546c037d24e0b9af6e892d76fc91d
点赞 回复 分享
发布于 2020-08-16 14:11
https://blog.nowcoder.net/n/018288dc74f245d8b3f272c2540f5384
点赞 回复 分享
发布于 2020-08-09 22:18
https://blog.nowcoder.net/n/a9a376805bb04682924032253d5d634a
点赞 回复 分享
发布于 2020-08-09 14:51
https://blog.nowcoder.net/n/ced4d0d682464b4e991c67d418fc0b96
点赞 回复 分享
发布于 2020-08-07 17:55
https://blog.nowcoder.net/n/6de865ec2a90476199a7950d957a8fa0
点赞 回复 分享
发布于 2020-08-06 15:58
https://blog.nowcoder.net/n/b6b609e651fe42138fe4485be1f81079
点赞 回复 分享
发布于 2020-08-05 20:49
https://blog.nowcoder.net/n/53387253a4a44c9c8cf86446756ffda3
点赞 回复 分享
发布于 2020-08-05 00:12
https://blog.nowcoder.net/n/6bb0383b13994e7ebbb41922f5129765
点赞 回复 分享
发布于 2020-08-04 22:53
https://blog.nowcoder.net/n/095ec6cebedc4cb7846cf72d06df4d2f
点赞 回复 分享
发布于 2020-08-04 21:07
https://blog.nowcoder.net/n/66a7f0b2aeed429097cd9ef4334a847b
点赞 回复 分享
发布于 2020-08-04 20:08
https://blog.nowcoder.net/n/423e9610a85b49ee84ab8bfe938a11cf
点赞 回复 分享
发布于 2020-08-04 17:34
https://blog.nowcoder.net/n/dd0dbdc4a22842e8a1f829ca2e0ef203
点赞 回复 分享
发布于 2020-08-04 10:52
https://blog.nowcoder.net/n/394dd070f6c84f05b6dd775d210b4962
点赞 回复 分享
发布于 2020-08-04 10:19
https://blog.nowcoder.net/n/a042fafaaca348c4b1f660c67abf0a97
点赞 回复 分享
发布于 2020-08-04 09:01
https://blog.nowcoder.net/n/eacd2885c1cc4afda7b4116542146a46
点赞 回复 分享
发布于 2020-08-04 01:45
https://blog.nowcoder.net/n/d69730956de34fbfaf87c72c3625938f
点赞 回复 分享
发布于 2020-08-03 21:33
https://blog.nowcoder.net/n/983716f3f9634e7d9957bfc5ca06d074
点赞 回复 分享
发布于 2020-08-03 20:49

相关推荐

03-26 12:00
已编辑
门头沟学院 Java
offer魅魔_oc...:100-200每天,你还要倒贴100
点赞 评论 收藏
分享
原来已经一年了,因为没有加任何实验室没有学长学姐带,再一次偶然的机会下刷到我们学校的牛肉哥,和他聊天之后发现他也没加实验室能进大厂,我就燃起了希望,去年大概 4 月份找好路线 零基础 开始学 5 月背八股和开始刷算法很难受 7-8 月焦虑躯体化害怕找不到实习 9 月找到一家像样的小厂去实习了 4 个月大三上期末考试结束之后 1 月份回来边实习边准备工作压力很大 当时只有字节、百度、商汤的面试,字节三面挂了,百度 oc,商汤 二面挂(差评 无效面试),之后来深圳百度实习之后还是觉得不甘心一直没把算法和八股扔下一直在准备,百度实习的时候 mt 交给我一个特别重要的工作数据库迁移(特别感谢 mt ,这个需求学到了很多东西处理了一堆线上问题),本来看着暑期他们面试都很困难,然后听说百度要涨实习薪资(然而 5 月并没有涨),就想着留在百度吧也懒得面试了,4 月 20 多的时候字节 hr 打电话约面问我要不要尝试一下询问了 1 月份三面为啥会挂有没有学习 ai 知识(因为字节这边后端岗位偏 ai),我来到百度之后全面拥抱 AI 也认识了我的好兄弟 X 哥,他在百度 XX 部门 Agent 实习,他属于是我 Agent 的启蒙老师,来百度之后一直在了解 AI 这一块,我就接受了字节的面试,一面的时候 20 分钟实习拷打然后突然说 30 分钟代码考核我心就凉了以为是 kpi,算法题是手撕高并发安全下的令牌桶限流器,我写了整整 80 多行代码最后也写出来了,但是从来没看到过出这种题能 oc 的我也就不管了,后边面试也是很顺利但是流程有点长可能一直在横向吧总结结果是好的!!!感谢这一年努力的自己和遇到的各位互联网大佬分享的知识!!!ps 图二纯感慨 (觉得🍬请不要喷我)欢迎大家一起交流学习呀!!!!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务