Solution

根据题意已知有2种合成方法,假设A方法合成a件,B方法合成b件成品。
那么可以得到对应式子
约束条件为:a>=0;b>=0;2a+4a<=x;3a+b<=y **(注意a,b才是未知数x,y是已知的,并且 )**
求解: z = a + b的最大截距
如果思路清晰就是一道高中的线性规划知识,不过因为斜率原因需要分几种情况取对应点而已。

这里借用一下这位大佬的图本菜鸡画图不行

(1)
![图片说明](https://uploadfiles.nowcoder.com/images/20200428/919749006_1588087944862_B1AC829F6822509CA8EAE30C7AD4E2DD "图片标题")
(2)
![图片说明](https://uploadfiles.nowcoder.com/images/20200428/919749006_1588087959967_82BCB231E712F7DE8628039DCDC0F326 "图片标题")
(3)
![图片说明](https://uploadfiles.nowcoder.com/images/20200428/919749006_1588087972191_F810BC316F161D6D491A7F92DE5F63BC "图片标题")

取到对应截距最大点带入即可

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main() {
    int T;
    scanf("%d", &T);
    while (T--) {
        ll x, y;
        scanf("%lld %lld", &x, &y);
        ll temp1 = y, temp2 = y / 3, temp3 = x / 4, temp4 = x / 2;
        if (temp3 >= temp1)
            printf("%lld\n", temp1);
        else if (temp4 >= temp2) {
            double x1 = (4 * y - x) / 10.0;
            ll a = ceil(x1), b = floor(x1); //ceil向上取整,floor向下取整
            ll ans = max(a + (y - a * 3), (b + (x - 2 * b) / 4));
            printf("%lld\n", ans);
        }
        else
            printf("%lld\n", temp4);
    }
    return 0;
}