欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Codeforces Round #603 (Div. 2) A. Sweet Problem

程序员文章站 2022-04-30 22:49:20
...

【题目链接】A题链接

【题目类型】思维

【题目大意】有三种颜色的糖果(色素警告!)分别是红绿蓝,每天吃两个糖果,但两个糖果不能是同一个颜色,问最多能吃几天呢?

【解题思路】这题还是比较简单的,主要是在于选择每天吃哪两个糖果,其实通过样例就可以知道每种情况了。

input
6
1 1 1
1 2 1
4 1 1
7 4 10
8 1 4
8 2 8
output
1
2
2
10
5
9

你会发现有两种情况,一个是两个最小的糖果相加小于或者等于第三个的情况,另一个则是 8 2 8类似数据的情况。
也就是

  1. 情况1:a+b<=c
  2. 情况2:a+b > c

Codeforces Round #603 (Div. 2) A. Sweet Problem
第一种情况很好解决,主要是在于第二种情况。

那么我们不妨排一下序,a[0], a[1], a[2],如果是第二种情况的话,(a[0] + a[1] + a[2])/ 2 一定是落在第二个上面的,也就是a[1]上面,那我们就可以从这个(a[0] + a[1] + a[2])/ 2地方开始向两边去进行匹配

(为什么除以2呢,因为每天是吃两个)

//ac code
		RD(a[0], a[1], a[2]);
        sort(a, a+3);
        if (a[0]+a[1] <= a[2]){cout << a[0]+a[1] << '\n';}
        else { cout << min((a[0]+a[1]+a[2])/2, a[0]+a[1]) << '\n';