问题描述
一个n×m的黑白相间的棋盘,每次可以选择一个矩形把其中的所有格子反色。问把所有格子变成一种颜色时的最少操作次数。
输入描述
第一行一个整数 T(T≤10)T(T \leq 10)T(T≤10) 表示数据组数。 每组数据有一行, 两个正整数 n,m(n≤109,m≤109)n,m(n \leq 10^9, m \leq 10^9)。
输出描述
对于每组数据输出一行一个整数,代表最少需要的操作次数。
输入样例
3 1 2 2 2 3 3
输出样例
1 2 2 思路:水题,下面画个图就知道了 ac代码: #include<stdio.h> #include<math.h> #include<string.h> #include<stack> #include<set> #include<queue> #include<vector> #include<iostream> #include<algorithm> #define MAXN 1010000 #define LL long long #define ll __int64 #define INF 0xfffffff #define mem(x) memset(x,0,sizeof(x)) #define PI acos(-1) #define eps 1e-8 using namespace std; ll gcd(ll a,ll b){return b?gcd(b,a%b):a;} ll lcm(ll a,ll b){return a/gcd(a,b)*b;} ll powmod(ll a,ll b,ll MOD){ll ans=1;while(b){if(b%2)ans=ans*a%MOD;a=a*a%MOD;b/=2;}return ans;} //head int main() { int t; scanf("%d",&t); while(t--) { int n,m; scanf("%d%d",&n,&m); printf("%d\n",n/2+m/2); } return 0; }