【每日一题】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/0b8246e91170482aabb399537d4d7636
点赞 回复
分享
发布于 2020-08-03 17:54
联易融
校招火热招聘中
官网直投
https://blog.nowcoder.net/n/af1876e5c64744e8ba46454a7b17fe2c
点赞 回复
分享
发布于 2020-08-03 18:28
https://blog.nowcoder.net/n/983716f3f9634e7d9957bfc5ca06d074
点赞 回复
分享
发布于 2020-08-03 20:49
https://blog.nowcoder.net/n/d69730956de34fbfaf87c72c3625938f
点赞 回复
分享
发布于 2020-08-03 21:33
https://blog.nowcoder.net/n/eacd2885c1cc4afda7b4116542146a46
点赞 回复
分享
发布于 2020-08-04 01:45
https://blog.nowcoder.net/n/a042fafaaca348c4b1f660c67abf0a97
点赞 回复
分享
发布于 2020-08-04 09:01
https://blog.nowcoder.net/n/394dd070f6c84f05b6dd775d210b4962
点赞 回复
分享
发布于 2020-08-04 10:19
https://blog.nowcoder.net/n/dd0dbdc4a22842e8a1f829ca2e0ef203
点赞 回复
分享
发布于 2020-08-04 10:52
https://blog.nowcoder.net/n/423e9610a85b49ee84ab8bfe938a11cf
点赞 回复
分享
发布于 2020-08-04 17:34
https://blog.nowcoder.net/n/66a7f0b2aeed429097cd9ef4334a847b
点赞 回复
分享
发布于 2020-08-04 20:08
https://blog.nowcoder.net/n/095ec6cebedc4cb7846cf72d06df4d2f
点赞 回复
分享
发布于 2020-08-04 21:07
https://blog.nowcoder.net/n/6bb0383b13994e7ebbb41922f5129765
点赞 回复
分享
发布于 2020-08-04 22:53
https://blog.nowcoder.net/n/53387253a4a44c9c8cf86446756ffda3
点赞 回复
分享
发布于 2020-08-05 00:12
https://blog.nowcoder.net/n/b6b609e651fe42138fe4485be1f81079
点赞 回复
分享
发布于 2020-08-05 20:49
https://blog.nowcoder.net/n/6de865ec2a90476199a7950d957a8fa0
点赞 回复
分享
发布于 2020-08-06 15:58
https://blog.nowcoder.net/n/ced4d0d682464b4e991c67d418fc0b96
点赞 回复
分享
发布于 2020-08-07 17:55
https://blog.nowcoder.net/n/a9a376805bb04682924032253d5d634a
点赞 回复
分享
发布于 2020-08-09 14:51
https://blog.nowcoder.net/n/018288dc74f245d8b3f272c2540f5384
点赞 回复
分享
发布于 2020-08-09 22:18
https://blog.nowcoder.net/n/f0a546c037d24e0b9af6e892d76fc91d
点赞 回复
分享
发布于 2020-08-16 14:11

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务