• CF478C Table Decorations (贪心)


    Table Decorations

    Time limit per test: 1 second

    Memory limit per test: 256 megabytes

    Problem Description

    You have r red, g green and b blue balloons. To decorate a single table for the banquet you need exactly three balloons. Three balloons attached to some table shouldn't have the same color. What maximum number t of tables can be decorated if we know number of balloons of each color?

    Your task is to write a program that for given values r, g and b will find the maximum number t of tables, that can be decorated in the required manner.

    Input

    The single line contains three integers r, g and b (0 ≤ r, g, b ≤ 2·10^9) — the number of red, green and blue balloons respectively. The numbers are separated by exactly one space.

    Output

    Print a single integer t — the maximum number of tables that can be decorated in the required manner.

    Sample Input & output

    5 4 3 (output: 4)

    1 1 1 (output: 1)

    2 3 3 (output: 2)

    Note

    In the first sample you can decorate the tables with the following balloon sets: "rgg", "gbb", "brr", "rrg", where "r", "g" and "b" represent the red, green and blue balls, respectively.

    Solution

    题目数据给的很大,显然不是模拟的意思。所以应是利用贪心思想。

    思路是先对所给三个数值按降序排序,得到a、b、c。然后判断a与(b + c) * 2的关系:

    若a >= (b + c) * 2,则拿两个a分别给b或c,则限制因素为b+c。所以最后解为b+c(a剩余多了)。如果是三种颜色都挑,则提高了题目的要求,也就是只需三个颜色不都相同就可以。

    若a < (b+c) * 2,则限制因素为a。这时解为(a + b + c) / 3。解释是:首先可以发现在满足这个条件时,a是不够的,也就是说在a两个两个取完之前,b和c一定至少有一个还有剩。那么假设一个数据 3 3 2。模拟:1 2 2;0 0 2。也就是后面一定会剩下。那么是否会出现最后是0 1 6这种情况呢?也就是b的个数又成为限制因素。

    我反推了试试:0 1 6;2 2 6;4 3 6;6 4 6;8 5 6;10 6 6(5个桌子)。

    而实际上对于这个数据正确解法应是10 6 6;8 5 6;6 5 5;4 4 5;2 4 4;0 3 4;0 3 2;0 1 1(7个桌子)。

    所以,0 1 6这种情况的出现是因为在中间的选择过程中就已经不满足贪心。

    也就是说最后剩下的两个一定会是用到0 1、1 0、1 1三者之一,即剩下1个或2个。

    所以整数除法(a + b + c) / 3 为正解。

    if(a >= (b + c) * 2)
        cout << b + c << endl;
    else
        cout << (a + b + c) / 3 << endl;
  • 相关阅读:
    Spring Security(十七):5.8 Method Security
    Spring Security(十六):5.7 Multiple HttpSecurity
    Spring Security(十五):5.6 Authentication
    Spring Security(十四):5.4 Authorize Requests
    Spring Security(十三):5.2 HttpSecurity
    Spring Security(十二):5. Java Configuration
    Spring Security(十一):4. Samples and Guides (Start Here)
    Spring Security(十):3. What’s New in Spring Security 4.2 (新功能)
    Spring Security(九):2.4.4 Checking out the Source(检查来源)
    Spring Security(八):2.4.3 Project Modules
  • 原文地址:https://www.cnblogs.com/sandychn/p/8424775.html
Copyright © 2020-2023  润新知