[模拟] aw3776. 水果拼盘(模拟+CF1271A)

1. 题目来源

链接:3776. 水果拼盘

2. 题目解析

显然,哪个利润多先选哪个方案,方案一由 a,d 两种数量最小值决定,方案二由 b,c,d 三种数量最小值决定。然后直接计算就行了…

为啥我的第一反应就直接 while 来搞呢,时间直接到了 O ( n ) O(n) O(n)


时间复杂度: O ( 1 ) O(1) O(1)

空间复杂度: O ( 1 ) O(1) O(1)


直接计算即可。

C++ 多个元素取最大、最小值。是 C++11 的语法糖,是在列表 list 内取最小值!而初始化一个无名 list 是要使用花括号的。在这个花括号里面的必须定义小于号!

#include <bits/stdc++.h>

using namespace std;

int a, b, c, d, e, f;

int main() {
    int T; cin >> T; while (T -- ) {
        cin >> a >> b >> c >> d >> e >> f;
        int res = 0;
        if (e > f) res += min(a, d) * e, d -= min(a, d), res += min({b, c, d}) * f;
        else res += min({b, c, d}) * f, d -= min({b, c, d}), res += min(a, d) * e;

        cout << res << endl;
    }

    return 0;
}

while 写法,也可以直接枚举 d,分给两种方案,求个最大值也行。

#include <bits/stdc++.h>

using namespace std;

int a, b, c, d, e, f;

int main() {
    int T; cin >> T; while (T -- ) {
        cin >> a >> b >> c >> d >> e >> f;
        int res = 0;
        if (e < f) {
            while (b && c && d) b -- , c -- , d -- , res += f;
            while (a && d) a -- , d -- , res += e;
        } else {
            while (a && d) a -- , d -- , res += e;
            while (b && c && d) b -- , c -- , d -- , res += f;
        }

        cout << res << endl;
    }

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ypuyu

如果帮助到你,可以请作者喝水~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值