
Sweet Problem
发布日期:2021-05-07 06:57:15
浏览次数:26
分类:原创文章
本文共 968 字,大约阅读时间需要 3 分钟。
Sweet Problem \operatorname{Sweet\ Problem} Sweet Problem
题目链接:
题目
有三堆糖果,在同一堆中的糖果颜色相同,但没有两堆糖果的颜色是一样的。
你每天要吃掉两个糖果,但不能吃掉两个颜色相同的糖果。你最多可以吃多少天?
输入
第一行一个正整数 t ( 1 ≤ t ≤ 1000 ) t(1\leq t \leq 1000) t(1≤t≤1000) 测试数据的数量。
对于每组测试数据,在一行有三个正整数 r , g , b ( 1 ≤ r , g , b ≤ 1 0 8 ) r,g,b(1\leq r,g,b \leq 10^8) r,g,b(1≤r,g,b≤108) ,表示每堆糖果的数量。
输出
对于每组测试数据,输出一个整数,表示最多可以吃的天数。
翻译贡献者 U108949
样例输入
61 1 11 2 14 1 17 4 108 1 48 2 8
样例输出
1221059
思路
这道题是一道规律题。
我们可以把每堆糖果的数量从小到大排序,然后分类讨论。
如果最大的那一堆比剩下两堆加起来还要大,那就只能用那两堆和最多的那一堆组合,就是最小两个的糖果数量。
那如果不是,我们就可以发现必定有一种方法可以把它们平均分配到没有或者只剩一个。那答案就是所有糖果的数量的 / 2 /2 /2 。(这里的 / / / 是整除)
那就可以了。
代码
#include<cstdio>#include<algorithm>using namespace std;int n, a[4];int main() { scanf("%d", &n);//读入 for (int i = 1; i <= n; i++) { scanf("%d %d %d", &a[1], &a[2], &a[3]);//读入 sort(a + 1, a + 3 + 1);//排序 if (a[3] > a[1] + a[2]) printf("%d\n", a[1] + a[2]);//少的那两堆糖果全部和剩下那一堆组合都组不玩 else printf("%d\n", (a[1] + a[2] + a[3]) / 2);//可以平均分配 } return 0;}
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月31日 22时34分25秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java中如何构建树结构
2019-03-04
解决vue部署到nginx后刷新404
2019-03-04
解决eclipse字体背景变红或者变绿的问题
2019-03-04
扫雷小游戏——简单易懂
2019-03-04
软件架构-zookeeper快速入门
2019-03-04
软件架构-zookeeper场景和实现
2019-03-04
「初级篇」跟我一起学docker(四)--容器的基本操作
2019-03-04
22 岁毕业做程序员的「普通」人,50 岁时的人生轨迹是怎样的?
2019-03-04
scala上界与下界、协变与逆变
2019-03-04
java稀疏数组
2019-03-04
全球数字货币加快研发
2019-03-04
数字化助力金融科技,实现产业良性循环
2019-03-04
2020-11-23(彻底理解KMP)
2019-03-04
常用的IDC函数
2019-03-04
BUUCTF 新年快乐 内涵的软件 Java逆向解密 刮开有奖
2019-03-04
angr学习笔记(7)(malloc地址单元符号化)
2019-03-04
angr学习笔记(9)(添加约束)
2019-03-04
angr学习笔记(13)(static_binary)
2019-03-04
windows环境利用start命令实现微信多开
2019-03-04
「CF149D」括号涂色 区间DP好题
2019-03-04