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(1t1000) 测试数据的数量。

对于每组测试数据,在一行有三个正整数 r , g , b ( 1 ≤ r , g , b ≤ 1 0 8 ) r,g,b(1\leq r,g,b \leq 10^8) r,g,b(1r,g,b108) ,表示每堆糖果的数量。

输出

对于每组测试数据,输出一个整数,表示最多可以吃的天数。

翻译贡献者 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;}
上一篇:初探SSRF漏洞
下一篇:虚拟机不能ping通主机,但主机可以ping通虚拟机

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月31日 22时34分25秒