CF950A Left-handers, Right-handers and Ambidexters 題解
阿新 • • 發佈:2021-12-21
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\}\),分兩種情況討論:
- 當 \(x-y>a\),那麼我們就儘量多的往 \(y\) 裡面加入慣用兩隻手的人,那麼答案就是 \(2(y+a)\)。
- 否則,我們先往 \(y\) 裡面加人使得人數一樣多,然後剩下的再均分進入兩組即可(當然,如果剩下的 \(a\)
綜上,答案為 \(\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; }