https://vjudge.net/problem/LightOJ-1010
给定一个m×n的棋盘,你想把棋子放在哪里。你必须找到棋盘上最多可以放置的骑士数量,这样就不会有两个骑士互相攻击。不熟悉棋手的注意,棋手可以在棋盘上攻击8个位置,如下图所示。
不论输入的m和n的大小,让m是较小的那一个
1、m == 1
2、m == 2
则可以放满一个田字格以后,空一个田字格,这样放
3、其他
棋盘分为两种颜色,放在较多的颜色的方格上(通过观察可以知道,在这种情况下,骑士是不会相互攻击的)
#include <iostream>
#include <cstdio>
using namespace std;
int main ()
{
int n,m,T,t;
cin >> T;
for(int i=1;i<=T;i++)
{
cin >> m >> n;//m表示行数,n表示列数
printf("Case %d: ",i);
if(m > n)
{
t = m;
m = n;
n = t;
}
if(m==1)
{
cout << m*n << endl;
continue;
}
if(m==2)
{
if(n%4<2)
cout << (n/4)*4 + (n%4)*2 << endl;
else
cout << (n/4)*4 + 4 << endl;
continue;
}
if((m*n)%2!=0)
cout << (n*m)/2+1 << endl;
else
cout << (n*m)/2 << endl;
}
return 0;
}