其他分享
首页 > 其他分享> > CF950A Left-handers, Right-handers and Ambidexters 题解

CF950A Left-handers, Right-handers and Ambidexters 题解

作者:互联网

Content

有 \(l\) 个人是左撇子,有 \(r\) 个人是右撇子,另外有 \(a\) 个人既惯用左手又惯用右手。现在想组成一个队伍,要求队伍中惯用左手的人和惯用右手的人相等,试求出团队里面的最大人数。

数据范围:\(0\leqslant l,r,a\leqslant 100\)。

Solution

假设 \(x=\max\{l,r\},y=\min\{l,r\}\),分两种情况讨论:

  1. 当 \(x-y>a\),那么我们就尽量多的往 \(y\) 里面加入惯用两只手的人,那么答案就是 \(2(y+a)\)。
  2. 否则,我们先往 \(y\) 里面加人使得人数一样多,然后剩下的再均分进入两组即可(当然,如果剩下的 \(a\) 是奇数,那么剩下的那一个直接丢弃),答案就是 \(2(x+\left\lfloor\dfrac{a-x+y}{2}\right\rfloor)\),

综上,答案为 \(\begin{cases}2(y+a)&x-y>a\\2(x+\left\lfloor\dfrac{a-x+y}{2}\right\rfloor)&x-y\leqslant a\end{cases}\)。

Code

int l, r, a, ans;

int main() {
	getint(l), getint(r), getint(a);
	writeint(ans = (abs(l - r) > a) ? (min(l, r) + a) * 2 : max(l, r) * 2 + (a - (max(l, r) - min(l, r))) / 2 * 2);
	return 0;
}

标签:lfloor,Right,惯用,题解,min,handers,getint,max,leqslant
来源: https://www.cnblogs.com/Eason-AC/p/15716774.html