玩《Minecraft》的贝贝
题目描述
贝贝通过
/give
\color{red}{\text{/give}}
/give 指令获得了 n 个木棍和 m 个钻石,以及一个工作台,他想要制造尽可能多的工具。
一共有五种钻石工具,下面是每种钻石工具的合成方案:
输入描述
第一行,一个整数,为数组组数 T 。
接下来的 T 行,每行两个以空格分隔的整数 n,m 。
输出描述
输出 T 行,每行一个整数,表示该组数据可制作工具数量的最大值。
输入示例1
3
2 9
5 4
6 7
输出示例1
2
3
4
备注:
【评测用例规模与约定】
对于 20% 的数据, 1 ≤ T ≤ 5 1\le T\le 5 1≤T≤5, 0 ≤ n 0\le n 0≤n, m ≤ 20 m\le 20 m≤20 。
对于100% 的数据, 1 ≤ T ≤ 1 0 5 , 0 ≤ n , m ≤ 1 0 9 1\le T\le 10^5,0\le n,m\le 10^9 1≤T≤105,0≤n,m≤109 。
代码内容
// #include <iostream>
// #include <algorithm>
// #include <cstring>
// #include <stack>//栈
// #include <deque>//堆/优先队列
// #include <queue>//队列
// #include <map>//映射
// #include <unordered_map>//哈希表
// #include <vector>//容器,存数组的数,表数组的长度
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll t;
cin>>t;
while(t--)
{
double n,m;
cin>>n>>m;
double x=(2*m-n)/3;
double y=(2*n-m)/3;
ll ans=0;
if(x<=0) ans=min(n/2,m);
else if(y<=0) ans=min(n,m/2);
else ans=x+y;
cout<<ans<<endl;
}
return 0;
}