• 分水果(冬季每日一题 21)


    现在有 a a a 个苹果, b b b 个香蕉, c c c 个橘子。

    你要将这些水果分给尽可能多的小朋友。

    假设一个小朋友分到的苹果数量为 x x x,香蕉数量为 y y y,橘子数量为 z z z

    在分发水果时,需要满足:

    • 每个小朋友至少要分到一个水果,即 x + y + z ≥ 1 x+y+z≥1 x+y+z1
    • 每个小朋友分到的苹果数量不得超过 1 1 1,香蕉数量不得超过 1 1 1,橘子数量不得超过 1 1 1,即 0 ≤ x , y , z ≤ 1 0≤x,y,z≤1 0x,y,z1
    • 任意两个小朋友分到的水果均不完全相同,即所有三元组 ( x , y , z ) (x,y,z) (x,y,z) 互不相同。

    请问,最多可以将水果分给多少个小朋友。

    输入格式
    第一行包含整数 T T T,表示共有 T T T 组测试数据。

    每组数据占一行,包含三个整数 a , b , c a,b,c a,b,c

    输出格式
    每组数据输出一行结果,表示可以分到水果的小朋友的最大数量。

    数据范围
    1 ≤ t ≤ 500 , 1≤t≤500, 1t500,
    0 ≤ a , b , c ≤ 10 0≤a,b,c≤10 0a,b,c10
    输入样例:

    7
    1 2 1
    0 0 0
    9 1 7
    2 2 3
    2 3 2
    3 2 2
    4 4 4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    输出样例:

    3
    0
    4
    5
    5
    5
    7
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    #include
    
    using namespace std;
    
    int q[10][5];
    
    void init(){
        for(int i = 1; i < 1 << 3; i++) {
            q[i][0] = i & 1;
            q[i][1] = i >> 1 & 1;
            q[i][2] = i >> 2 & 1;
        }
    }
    
    int main(){
        
        int t;
        cin >> t;
        
        init();
        
        int a, b, c;
        while(t--){
            
            cin >> a >> b >> c;
            
            int sa, sb, sc, cnt;
            int res = 0;
            for(int i = 1; i < 1 << 7; i++){
                sa = sb = sc = cnt = 0;
                for(int j = 0; j < 7; j++){
                    if(i >> j & 1){
                        cnt++;
                        sa += q[j+1][0], sb += q[j+1][1], sc += q[j+1][2];
                    }
                }
                if(sa <= a && sb <= b && sc <= c) res = max(res, cnt);
            }
            cout << res << endl;
        }
        
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
  • 相关阅读:
    springboot+mybatis-plus初尝试
    Spring事务
    【从零开始学习Redis | 第二篇】Redis中的数据类型和相关命令
    快速创建微信小程序,注册即认证,无需300元认证费
    新160个CrackMe分析-第1组:1-10(上)
    ARM---day02
    PCB放置过孔技巧
    开源之夏 2023 | Databend 社区项目总结与分享
    使用 SMI 指标增强股票分析:amCharts JS Crack
    计算机网络-局域网和城域网(二)
  • 原文地址:https://blog.csdn.net/qq_46456049/article/details/128159861