Rikka with Chess
Accepts: 393
Submissions: 548
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
问题描述
一个n×m的黑白相间的棋盘,每次可以选择一个矩形把其中的所有格子反色。问把所有格子变成一种颜色时的最少操作次数。
输入描述
第一行一个整数 T(T≤10) 表示数据组数。 每组数据有一行, 两个正整数 n,m(n≤109,m≤109)。
输出描述
对于每组数据输出一行一个整数,代表最少需要的操作次数。
输入样例
3 1 2 2 2 3 3
输出样例
1 2 2
这是一个很简单的题,刚开始我一直忽略掉了黑白相间四个字,一直想不明白,到底要算什么。后来明白了,既然是黑白相间,那么就意味着奇数行或奇数列的颜色是相同的,那么每两行之间就只需要更改一行,每两列之间也只需要更改一列。交叉的点会更改两次就回到了最初的颜色,未交叉的点则会更改成另一个颜色。
#include <iostream>
#include<cstdio>
using namespace std;
int main()
{
int t,n,m;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
printf("%d\n",n/2+m/2);
}
return 0;
}