题解 | 清楚姐姐买竹鼠

清楚姐姐买竹鼠

https://www.nowcoder.com/practice/816dfe69f83042108cf8c74531a94a35

用dp会爆时间和空间,考虑贪心

先考虑3只3只的买,剩下的再单独买

3只买的最便宜价格不一定就是b元,也可能是3*a元。

这里决策一下,剩下的不够3只,要么考虑一只一只买,买完,要么直接买3只。

极端情况就是:3只的价钱贵的离谱,但1只的价钱很便宜,乘3也抵不过直接买3只的b元,也可能出现1只价格贵的离谱,3只的反而很便宜,最后只剩下一只或两只的时候,直接买3只会比分开买更便宜。

为什么先3只3只的买一定是最优的呢?因为如果你不这样买,你一只一只买,每买3只其实还是等价于直接买3只,只不过我们讨论是按3*a还是b而已

#include <iostream>
using namespace std;
typedef long long ll ;
int main() {
    ll a,b,x;
    cin>>a>>b>>x;
    ll c3=min(b,3*a);//买3只的价钱
    ll c1=a; //只买一只的价钱
    ll ans=x/3 *c3;
    x%=3;
    ans+=min(x*c1,c3);
    cout<<ans;
}
// 64 位输出请用 printf("%lld")
全部评论

相关推荐

996的工作制还是没能硬啃下去,快要面试怂了,取消了
牛客80700350...:很正常,不是所有人都能接受这种强度的。不叫怯战,这叫明智
点赞 评论 收藏
分享
鱼专:别投了,我看到有人点了第二个链接投递,还没退出界面,不合适的邮件就发过来了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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