题目大意:有n*m个方格,要给他们染成红蓝两种颜色,且上下左右相邻的方格不能是同一种颜色,可以把这些方格剪成至少两个的小长方形,问至少要多少格被涂成蓝色。
思路:因为两种颜色不能相邻,所有最优策略就是将他们剪成1*3的小长方形,只需要把中间一个涂成蓝色,如果剩余的方格不能被剪成1*3的小长方形,就剪成1*2的小长方形,也只需要一格蓝色,所以答案就是方格数除以3,向上取整。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin >> t;
while (t--)
{
double n, m,ans;
cin >> n >> m;
cout << (int)ceil(n * m / 3) << endl;
}
return 0;
}