10.15B度(已改编)-第二套

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试

💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历

✨ 本系列打算持续跟新 春秋招算法题

👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸

✨ 算法合集传送们 -> 🧷学长刷题笔记

🍒 本专栏已收集 140+ 套题,算法题 会在第一时间跟新

🍄 题面描述等均已改编,如果和你笔试题看到的题面描述不一样请理解,做法和题目本质基本不变。

🍹 感谢各位朋友们的订阅,你们的支持是我们创作的最大动力 💞

alt

🍥 本次百度共有三套卷,本套卷是两题卷,题目难度相比于其他的难度较小

1️⃣ 打卡题,考虑到数据范围十分小,每次暴力的加最小的那个

2️⃣ 前后缀分解+动态规划,然后

🌈 01.花园美化计划 评测链接🔗

问题描述

K小姐是一位园艺爱好者,她有一个美丽的花园。花园里有四种不同的花卉,分别用 表示每种花卉的数量。为了让花园更加美丽,K小姐决定进行一项花园美化计划。

她计划在 天内每天为其中一种花卉增加一株。K小姐想知道,在完成这个计划后,四种花卉数量的乘积最大可以达到多少。

输入格式

输入包含多组测试数据。

第一行包含一个正整数 ,表示测试数据组数。

接下来 行,每行描述一组测试数据,包含五个整数 ,分别表示四种花卉的初始数量和计划天数。

输出格式

输出包含 行。

对于每组测试数据输出一行一个整数,表示完成计划后四种花卉数量的最大乘积。

样例输入1

2
1 2 3 4 2
1 2 1 2 3

样例输出1

72
24

样例解释

样例 解释说明
样例1 对于第一组测试数据,K小姐可以给第一种花卉增加1株,给第二种花卉增加1株,最终四种花卉的数量为2、3、3、4,乘积最大为72。
对于第二组测试数据,K小姐可以给第一种花卉增加1株,给第三种花卉增加1株,给第四种花卉增加1株,最终四种花卉的数量为2、2、2、3,乘积最大为24。

数据范围

题解

贪心+模拟

需要理解,要使四个数的乘积最大,应该尽可能地平衡这四个数。

解题思路如下:

  1. 每次操作时,应该选择当前最小的数进行增加。这是因为乘法的特性决定了,增加较小的数会比增加较大的数带来更大的收益。

  2. 我们可以使用一个循环,每次找出四个数中的最小值,将其加1,然后重复这个过程k次。

  3. 最后,计算四个数的乘积即可得到答案。

举个例子,假设初始状态是1、2、3、4,k=2:

  • 第一次操作:选择1(最小值),变成2、2、3、4
  • 第二次操作:选择2(最小值),变成2、3、3、4
  • 最终乘积:2 * 3 * 3 * 4 = 72

参考代码

  • Python
# 读取测试数据组数
T = int(input())

for _ in range(T):
    # 读取每组测试数据
    a, b, c, d, k = map(int, input().split())
    
    # 创建花卉数量列表
    flowers = [a, b, c, d]
    
    # 进行k次操作
    for _ in range(k):
        # 找到最小值的索引
        min_index = flowers.index(min(flowers))
        # 将最小值加1
        flowers[min_index] += 1
    
    # 计算乘积
    result = 1
    for flower in flowers:
        result *= flower
    
    # 输出结果
    print(result)
  • Java
import java.util.Scanner;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int T = scanner.nextInt();  // 读取测试数据组数

        for (int t = 0; t < T; t++) {
            // 读取每组测试数据
            int[] flowers = new int[4];
            for (int i = 0; i < 4; i++) {
                flowers[i] = scanner.nextInt();
            }
            int k = scanner.nextInt();

            // 进行k次操作
            for (int i = 0; i < k; i++) {
                Arrays.sort(flowers);  // 排序以找到最小值
                flowers[0]++;  // 将最小值加1
            }

            // 计算乘积
            long result = 1;
            for (int flower : flowers) {
                result *= flower;
            }

            // 输出结果
            System.out.println(result);
        }
    }
}
  • Cpp
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main() {
    int T;
    cin >> T;  // 读取测试数据组数

    while (T--) {
        vector<int> flowers(4);
        int k;
        
        // 读取每组测试数据
        for (int i = 0; i < 4; i++) {
            cin >> flowers[i];
        }
        cin >> k;

        // 进行k次操作
        for (int i = 0; i < k; i++) {
            auto min_it = min_element(flowers.begin(), flowers.end());
            (*min_it)++;  // 将最小值加1
        }

        // 计算乘积
        long long result = 1;
        for (int flower : flowers) {
            result *= flowe

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏短期内不再更新,请勿继续订阅

全部评论

相关推荐

2025-12-02 02:15
门头沟学院
最近菊厂陆续开了,极力劝退那些拿13级的985硕士,就13级那么点儿薪资,一线城市每个月到手1.8/7/6w,租房2k还是破烂,吃饭2k还是预制菜,买个1k衣服都是聚酯纤维破塑料,稍微出去浪一浪,能留1w就是万岁,要是再有个啥都想买的对象,一线工作一年难存10w。隔壁工地混泥土,钳工,焊工一天800+,还包吃包住。读书18年到985硕士出来就为了进厂螺丝工?还不如从8岁童工开始干活,别人读书完了你工龄18+,混不上领导也是个小头头了。当然专科进来正式工,od都行,一般本科进来13级也OK,毕竟22岁年纪摆在那个地方还不需要太花钱。读硕博的基本26岁,工作两年就要结婚的,兜里没几个崽,连彩礼都要信用贷。菊厂离职的不少,毕竟正常没人受得了9116(梗:再来一次911刷6)。为啥这时候劝?因为刚下班,因为国考刚完,省考下周,就是可惜选调只有当年应届能报。现在回想能拍断大腿。应届生真实好身份,错过这一次,选调,考公,考编,当老师,进医院,研究所,高校,央国企,基本都无缘了,就连报名资格都被剥夺了,可谓是被党和国家遗弃的废材,统称“社会上的”,扔到社会去流浪,被用坏了就扔医院,长期超负载使用,零件修不好基本可以扔火里回炉重造了。体制内奉行找体制内的,都是党和国家选的人才,智力不差,样貌不丑,身材端正,收入稳定,安居房政策福利待遇也OK。因公出行都是报销,周末顺带“游山玩水“,这种体制内单身资源但凡想找对象,去社会上随便吆喝一声都排队。观察一下,基本没什么公务员在相亲,因为早就被邻里邻居抢光了。
哈哈哈,你是老六:就这不去的人大把人干呢,现在不缺人干活,你不干大把干呢,还有那个说农民工赚钱的,那个800+我估计肯定也就那一段时间,哪有这么赚钱,还是一句话,要想存下钱必须花销极低,能省的就不花钱,工资要高点
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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