CF1593A Elections
题目大意
给定 \(T\),表示输入数据的个数。
对于每组数据:
给定三个整数 \(a,b,c\),分别求出要想让每个数比另外两个数大的最少操作次数。
注意,每次操作是独立的。
定义一次操作为让指定数加一。
例如样例 1 2 2
依次考虑:
对于 \(1\),要想让 \(1>max(2,2)\),输出 \(2\)。
对于 \(2\),要想让 \(2>max(1,2)\),输出 \(1\)。
对于 \(2\),同上。
翻译 \(\rm By~\)\(\rm\color{black}{Coros~Trusds.}\)
题目分析
签到题。
翻译很良心(
对于每组数据,我们只需要输出除当前讨论数之外的两个数的最大值 \(+1\) 与当前讨论数的差即可。
有点绕,形象化一点:
有三个数 \(a,b,c\),讨论 \(a\) 时,答案即为 \(\max(b,c)+1-a\)。
于是就没有了。
代码
inline int solve(int a,int b,int c)
{
if(a>b && a>c)
{
return 0;
}
return max(b,c)+1-a;
}
int main(void)
{
int T=read();
while(T--)
{
int a=read(),b=read(),c=read();
printf("%d %d %d\n",solve(a,b,c),solve(b,a,c),solve(c,a,b));
}
return 0;
}

浙公网安备 33010602011771号