CF1605A A.M. Deviation


洛谷题面

题目大意

给定三个数 \(a,b,c\),每次操作可以选择两个数分别进行 +1-1 操作。

问至少多少次操作可以使得 \(|a+c-2b|\) 最小。

题目分析

\(f(a,b,c)=|a+c-2b|\)

显然,如果让 \(a,c\) +1-1,答案不会改变,一定不是最优解,所以分类讨论:

  1. \(f(a+1,b-1,c)=|a+1+c-2\times(b-1)|=|a+c-2b+3|\)

  2. \(f(a-1,b+1,c)=|a-1+c-2\times(b+1)|=|a+c-2b-3|\)

  3. \(f(a,b+1,c-1)=|a+c-1-2\times(b+1)|=|a+c-2b-3|\)

  4. \(f(a,b-1,c+1)=|a+c+1-2\times(b-1)|=|a+c-2b+3|\)

\(\therefore\) 综上,经过一次操作后会与上次操作结果相差 \(3\)


\(\boxed{\texttt{结论:经过多次操作后,答案一定为 1 或 0。}}\)

证明:

如果经过多次操作后,当前为最优解,且 \(a,b,c\) 中有两个数之差大于等于 \(2\)

那么将其进行几次 +3-3 操作后,答案一定会更小。

这与当前为最优解矛盾,所以结论成立。


所以我们只需要判断 \(a+c-2b\) 的结果是否是 \(3\) 的倍数即可。

代码

while T--:
	in(a),in(b),in(c);
    if (a+c-2*b)%3==0:
        print(0)
    else:
        print(1)