Mô tả bài toán
Ba đống đá a,b,c. Mỗi phép: lấy 1 từ đống 1 và 2 từ đống 2; hoặc 1 từ đống 2 và 2 từ đống 3. Tối đa hóa tổng số đá lấy được.
Ví dụ
a=3,b=4,c=5 → Output: 9. (Lấy 2 lần phép 2: lấy 2 từ đống2, 4 từ đống3 =6; rồi 1 lần phép 1: 1 từ đống1, 2 từ đống2 =3; tổng 9).
Thuật toán
Ưu tiên phép 2 (vì dùng đống 3). Số phép 2 tối đa = min(b, c/2). Sau đó phép 1 tối đa = min(a, (b - phép2)/2). Tổng đá = (phép1+phép2)*3.
Code C++
#include <bits/stdc++.h>
using namespace std;
int solve(int a, int b, int c) {
int op2 = min(b, c/2);
int op1 = min(a, (b - op2)/2);
return (op1 + op2) * 3;
}
int main() {
int a=3,b=4,c=5;
cout << solve(a,b,c) << endl;
return 0;
}
Đầu vào / Đầu ra
Input: 3, 4, 5
Output: 9