CF-478C 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) * )
cout << b + c << endl;
else
cout << (a + b + c) / << endl;
CF-478C Table Decorations (贪心)的更多相关文章
- CodeForces 478C Table Decorations
Table Decorations Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u ...
- 贪心 Codeforces Round #273 (Div. 2) C. Table Decorations
题目传送门 /* 贪心:排序后,当a[3] > 2 * (a[1] + a[2]), 可以最多的2个,其他的都是1个,ggr,ggb, ggr... ans = a[1] + a[2]; 或先2 ...
- 【CODEFORCES】 C. Table Decorations
C. Table Decorations time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Codeforces Round #273 (Div. 2)-C. Table Decorations
http://codeforces.com/contest/478/problem/C C. Table Decorations time limit per test 1 second memory ...
- cf478C Table Decorations
C. Table Decorations time limit per test 1 second memory limit per test 256 megabytes input standard ...
- C. Table Decorations(Codeforces Round 273)
C. Table Decorations time limit per test 1 second memory limit per test 256 megabytes input standard ...
- codeforces 的 Codeforces Round #273 (Div. 2) --C Table Decorations
C. Table Decorations time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Codeforces Round #273 (Div. 2)C. Table Decorations 数学
C. Table Decorations You have r red, g green and b blue balloons. To decorate a single table for t ...
- 【Codeforces 478C】Table Decorations
[链接] 我是链接,点我呀:) [题意] 给你r,g,b三种颜色的气球 每张桌子要放3个气球 但是3个气球的颜色不能全都一样 (允许两个一样,或者全都不一样) 问你最多能装饰多少张桌子 [题解] 先把 ...
随机推荐
- springboot~HttpPut开启application/x-www-form-urlencoded
在使用spring框架时,默认情况下@RequestParam注解只到接受Get和Post请求参数 ,而对于Put来说默认是使用@ReqeustBody注解的,如果希望为Put也开启@RequestP ...
- 剑指offer-面试题33-二叉搜索树的后序遍历序列-二叉树遍历
/* 题目: 给定一个序列,判断它是否为某个二叉搜索树的后序遍历. */ /* 思路: 二叉搜索树:左子树<根节点<右子树. 序列的最右端为根节点,小于根节点的左半部分为左子树,大于根节点 ...
- [PKUWC2018]Minimax [dp,线段树合并]
好妙的一个题- 我们设 \(f_{i,j}\) 为 \(i\) 节点出现 \(j\) 的概率 设 \(l = ch[i][0] , r = ch[i][1]\) 即左儿子右儿子 设 \(m\) 为叶子 ...
- yii 日志和事件
日志 配置 'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [ [ 'class' => 'yii\log ...
- Java连载86-List集合详解
一.List集合 1.List集合存储元素的特点: (1)有序(List集合中存储有下标):存进去是这样的顺序,取出来还是按照这个顺序取出. (2)可重复 2.深入ListJ集合 ArrayLis ...
- 【整理】IC失效机理(持续更新)
IC 四种常见失效机理如下: EM -- electron migration,电子迁移)TDDB -- time dependent dielectric breakdown,与时间相关电 ...
- jQuery Moblie 问题汇总
1 使用jQuery动态添加html,没有jQuery Moblie的样式 $("body").html(listview);//以上代码只是把结构加上去了,但是却没有加上jqm ...
- geoserver发布地图服务
1. Geoserver启动 blog.csdn.net 2014-09-18 20:30 Geoserver是著名的开源GIS软件之一.也是项目中常用的地图服务软件.基于geoserver ...
- 3.Docker Compose 部署 GitLab
什么是 GitLab GitLab 是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或者私人项目.它拥有与 Githu ...
- ubantu crontab定时任务设置
Lynx浏览器安装.安装命令:sudo apt-get install lynx.打开终端输入:crontab -e若初次执行会出现以下(选择编译器,一般选4(Vim))Select an edito ...