当前位置: 首页 > article >正文

蓝桥杯历届真题 #食堂(C++,Java)

这题没什么好说的
考虑所有情况然后写就完了
虽然赛场上 交完不知道答案(doge)

原题链接

#include<iostream>

using namespace std;

int main() {
    int n;
    cin >> n;
    //能优先安排6人桌,要先安排6人桌
    //6人桌可以是2+2+2 或者 3+3 或者4+2
    //优先用3+3组合,因为3人寝只能凑6人桌
    //2+2+2 和 4+2 优先用哪个都一样
    //因为剩下奇数个2还是偶数个2都能去搭配
    while (n--) {
        int a2, a3, a4, b4, b6;
        cin >> a2 >> a3 >> a4 >> b4 >> b6;
        int res = 0;
        //先凑6人
        while (b6) {
            //3+3
            if (a3 / 2 > 0 && a3) {
                res += 6;
                a3 -= 2;
                b6 -= 1;
                continue;
            }
            //4+2(2+2+2也可以)
            if (a4 && a2) {
                res += 6;
                a4 -= 1;
                a2 -= 1;
                b6 -= 1;
                continue;
            }
            //最后凑2+2+2
            if (a2 / 3 != 0 && a2) {
                res += 6;
                a2 -= 3;
                b6 -= 1;
                continue;
            }
            //凑不出来6人就break
            //凑6人2+2+2 或者a3>=2 或者 1个4 1个2
            if ((a2 == 0 && a3 < 2) || (a2 < 3 && a3 < 2 && a4 == 0))break;
        }
        //凑4人
        while (b4 > 0) {
            //凑4人桌的优先级也是一样的(找不出来反例)
            if (a4) {
                a4 -= 1;
                res += 4;
                b4 -= 1;
                continue;
            }
            if (a2 / 2 != 0 && a2) {
                a2 -= 2;
                res += 4;
                b4 -= 1;
                continue;
            }
            //凑不出来4人就break
            //凑4人 2+2 或者 4
            if (a2 <= 1 && a4 == 0)break;
        }
        //最后盘算坐不满的情况
        //比如一个6人桌给两个人坐
        while (b6) {
            if (a2 && a3) {
                a2 -= 1;
                a3 -= 1;
                res += 5;
                b6 -= 1;
            }
            else if (a4) {
                a4 -= 1;
                b6 -= 1;
                res += 4;
            }
            else if (a3) {
                a3 -= 1;
                b6 -= 1;
                res += 3;
            }
            else if (a2) {
                a2 -= 1;
                b6 -= 1;
                res += 2;
            }
            else break;
        }
        while (b4) {
            if (a3 > 0) {
                b4 -= 1;
                a3 -= 1;
                res += 3;
            }
            else if (a2) {
                b4 -= 1;
                a2 -= 1;
                res += 2;
            }
            else break;
        }

        cout << res << endl;

    }
    return 0;
}
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();
        while (n-- > 0) {
            int a2 = scanner.nextInt();
            int a3 = scanner.nextInt();
            int a4 = scanner.nextInt();
            int b4 = scanner.nextInt();
            int b6 = scanner.nextInt();

            int res = 0;
            // 先凑6人
            while (b6 > 0) {
                // 3+3
                if (a3 >= 2) {
                    res += 6;
                    a3 -= 2;
                    b6 -= 1;
                    continue;
                }
                // 4+2
                if (a4 > 0 && a2 > 0) {
                    res += 6;
                    a4 -= 1;
                    a2 -= 1;
                    b6 -= 1;
                    continue;
                }
                // 2+2+2
                if (a2 >= 3) {
                    res += 6;
                    a2 -= 3;
                    b6 -= 1;
                    continue;
                }
                // 凑不出来6人就break
                if ((a2 == 0 && a3 < 2) || (a2 < 3 && a3 < 2 && a4 == 0)) {
                    break;
                }
            }
            // 凑4人
            while (b4 > 0) {
                // 凑4人桌的优先级也是一样的(找不出来反例)
                if (a4 > 0) {
                    a4 -= 1;
                    res += 4;
                    b4 -= 1;
                    continue;
                }
                if (a2 >= 2) {
                    a2 -= 2;
                    res += 4;
                    b4 -= 1;
                    continue;
                }
                // 凑不出来4人就break
                if (a2 <= 1 && a4 == 0) {
                    break;
                }
            }
            // 最后盘算坐不满的情况
            while (b6 > 0) {
                if (a2 > 0 && a3 > 0) {
                    a2 -= 1;
                    a3 -= 1;
                    res += 5;
                    b6 -= 1;
                } else if (a4 > 0) {
                    a4 -= 1;
                    res += 4;
                    b6 -= 1;
                } else if (a3 > 0) {
                    a3 -= 1;
                    res += 3;
                    b6 -= 1;
                } else if (a2 > 0) {
                    a2 -= 1;
                    res += 2;
                    b6 -= 1;
                } else {
                    break;
                }
            }
            while (b4 > 0) {
                if (a3 > 0) {
                    b4 -= 1;
                    a3 -= 1;
                    res += 3;
                } else if (a2 > 0) {
                    b4 -= 1;
                    a2 -= 1;
                    res += 2;
                } else {
                    break;
                }
            }

            System.out.println(res);
        }

        scanner.close();
    }
}

http://www.kler.cn/a/500491.html

相关文章:

  • qml SpringAnimation详解
  • Python学习(三)基础入门(数据类型、变量、条件判断、模式匹配、循环)
  • 计算机网络(四)网络层
  • Autoencoder(李宏毅)机器学习 2023 Spring HW8 (Boss Baseline)
  • 探讨人工智能机器人学之路径规划与导航:A*算法、Dijkstra算法等路径规划方法
  • 《零基础Go语言算法实战》【题目 2-12】Go 语言接口的工作原理
  • 冒泡排序基础与实现
  • 微服务的配置共享
  • C# OpenCV机器视觉:波形相似度
  • 深入解析 Spring AI 系列:剖析OpenAI接口接入组件
  • 3 前端: Web开发相关概念 、HTML语法、CSS语法
  • 解锁人工智能的核心:人工神经网络全面解析
  • 计算机网络——网络层-IP地址
  • 初学stm32 --- ADC模拟/数字转换器工作原理
  • ubuntu设置开机无需输入密码自启动todesk,内网穿透natapp
  • 【芯片封测学习专栏 -- 什么是 Chiplet 技术】
  • 数据结构与算--堆实现线段树
  • 专题 - STM32
  • AI在零售行业中的应用:提升顾客体验与运营效率
  • FastApi Swagger 序列化问题
  • Github 2025-01-12 php开源项目日报 Top10
  • C#用直线和曲线抗锯齿
  • GraphQL:强大的API查询语言
  • iOS 逆向学习 - iOS Application Publishing:应用发布