您的位置:首页 > 其它

LightOJ 1010 Knights in Chessboard (找规律)

2018-02-02 14:19 501 查看
题意:给你一个n*m的棋盘,问你最多可以放几个马,他们之间互不攻击。

x=min(n,m),y=max(n,m)

当x=1时,输出y。

当x=2时,输出我们可以放若干个田字。

当x>2时,我们全放在白格子或者黑格子上面。

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
typedef long long ll;

int main()
{
int t,cas=1;scanf("%d",&t);
while(t--)
{
int n,m;
scanf("%d%d",&n,&m);
int o=min(n,m);
int ans=0;

if(o==1)
{
ans=max(n,m);
}
else
if(o==2)
{
int y=max(n,m);
ans+=(y/4)*4;
if(y%4!=0)
{
ans+=min(2,y%4)*2;
}
}
else
{
int a1=((n+1)/2)*((m+1)/2)+(m/2)*(n/2);
int a2=((m+1)/2)*((n+1)/2)+(n/2)*(m/2);
ans=max(a1,a2);
}
printf("Case %d: %d\n",cas++,ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: