题解:AT_abc422_c [ABC422C] AtCoder AAC Contest
问题分析
首先明确题目核心要求:每场比赛需要至少 1 个 A、至少 1 个 C,再加上任意一个字母,即每场比赛消耗的字母组合需满足:
A的数量\geq 1 。C的数量\geq 1 。- 总字母数
= 3 。
因此,最多能举办的比赛场数受两个关键条件限制:
- A 和 C 的数量上限:比赛场数不能超过 A 的总数(
n_A ),也不能超过 C 的总数(n_C )。 - 总字母数上限:所有字母总数为
n_A + n_B + n_C ,每场消耗3 个,因此场数不能超过\lfloor \frac{n_A + n_B + n_C}{3} \rfloor 。
最终答案是这两个限制条件的最小值,即:
code
#include<bits/stdc++.h>
using namespace std;
int main()
{
int T;
cin>>T;
while(T--)
{
int a,b,c;
cin>>a>>b>>c;
cout<<min(min(a,c),(a+b+c)/3)<<endl;
}
return 0;
}