喝可乐

喝可乐

https://ac.nowcoder.com/acm/contest/11210/E

思路
枚举第一次选择的所有可能的情况,当第一次的情况确定后,就能获得这种情况能喝到的饮料数,取最大值即可
代码

#include<bits/stdc++.h>
using namespace std;
int t, n, a, b;
inline int pan(int x, int y)
{
    int ans = n;
    //  b, a
    int u, v;
    while (x >= a || y >= b) {
        u = x / a;//换b
        v = y / b;//换a
        ans += u + v;
        x = x % a + v;
        y = y % b + u;
    }
    return ans;
}
void solve()
{
    cin >> n >> a >> b;
    int ans = 0;
    for (int i = 0; i <= n; ++i) {//第一次选择的情况
        //取最大值
        ans = max(ans, pan(i, n - i));
    }
    cout << ans << endl;
}
int main()
{

    cin >> t;
    while (t--) solve();
    return 0;
}
全部评论
因为这题的两种可乐瓶盖可以互相兑换,无法确定最佳的贪心策略,就只能暴力枚举所有情况,得出最大值
点赞 回复 分享
发布于 2021-04-19 15:03
为什么不能用贪心啊,直接全部都是买花费比较小的那个,然后剩下的钱买花费比较大的
点赞 回复 分享
发布于 2021-04-19 11:31

相关推荐

04-29 15:00
东华大学 财务
点赞 评论 收藏
分享
可以不说话:笔试a了3道半,今天说是挂了😭😭
投递汇丰科技等公司10个岗位
点赞 评论 收藏
分享
ldf李鑫:不说公司名祝你以后天天遇到这样的公司
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务