zoukankan      html  css  js  c++  java
  • Codeforces 1263A. Sweet Problem(思维题)

    传送门

    题意:

    有红,绿,蓝三种颜色的糖各r,g,b个,每天要吃两个糖且颜色不同,问最多能吃多少天

    思路:

    先把r,g,b排序,从小到大为a,b,c如果a+b<=c,结果肯定输出a+b
    否则输出(a+b+c)/2
    原因:为了使天数最多,每次取最多和次多的两堆,当次多的变成和最少的相等时,把最多的那个平分个最少和中间那一堆,(如果最多的为奇数,那么总共还剩一个,如果为偶数,所有糖果用完),所以说最优解剩下的糖果不超过两个(a+b>c时)

    代码

    #include <iostream>
    #include <algorithm>
    #include <stdio.h>
    #include <string>
    #include <stack>
    #include <map>
    #include <math.h>
    #include <vector>
    #include <set>
    #include <queue>
    #include <map>
    #include <deque>
    //#include <bits/stdc++.h>
    typedef long long ll;
    using namespace std;
    int a[10];
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            scanf("%d%d%d",&a[1],&a[2],&a[3]);
            sort(a+1,a+4);
            if(a[1]+a[2]<=a[3])
            printf("%d
    ",a[1]+a[2]);
            else {
                printf("%d
    ", (a[1] + a[2] + a[3]) / 2);
            }
        }
        return 0;
    }
     
  • 相关阅读:
    SpringDataRedis 常用命令
    Java 连接 Redis
    Java 循环标记
    初学Docker
    线程池,进程和线程的理解
    Linux-定时器任务
    Linux 命令2
    Linux命令
    Java基础整理
    微服务简介
  • 原文地址:https://www.cnblogs.com/zzl_Alexander/p/11965706.html
Copyright © 2011-2022 走看看