Codeforces 526C - Om Nom and Candies(贪心,暴力)

博客解析了一道关于贪心算法和暴力枚举的编程题目,题目要求在限定的糖总重量内,选择两种糖以获得最大欢乐度。博主提供了两种策略:当糖的最大重量超过平方根(c)时,直接枚举该糖的数量;当糖的重量都小于平方根(c)时,通过性价比进行枚举。代码中展示了如何实现这两种策略,以找到最大欢乐度的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题意:你最多可以吃C千克的糖,   有两种糖,每种糖有两个参数,一个为重 w  ,一个为欢乐度 h , 如何选择才能拥有最高的欢乐度,  两种糖数量不限。

题解:看了半天题解才理解如何做,

分为两种枚举政策涵盖了所有情况, 时间复杂度为sqrt(c),神奇的暴力

1。如果两种糖中重量最大的超过sqrt(c),  那么该糖最多也只能选择不超过sqrt(c)个,   直接枚举该糖个数,记录最大欢乐度

2。如果两种糖重量都小于sqrt(c),那么从性价比来考虑

我们可以买到Wb个a糖果的同时也可以将其换作Wa个b糖果

但是有不等式可以知道明显我们不会选择买超过Wb以上的a糖果,而是将其换作Wa的b糖果

有此可以知道我们可以枚举性价比低的糖果,且我们想到该糖果最大购买数量也是小于Wb的    时间复杂度为sqrt(c)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值