LightOJ-1010 Knights in Chessboard

题目大意:有t个样例,输入列数n与行数m,问你国际象棋中的骑士(也就是“马”)最多能排多少个位置(0<t<=41000,1<=n,m<=200)
示意图:
图片说明
思路:一开始想着用dfs,但200肯定超时了,还是得找规律,百度了一下有如下规律,一行或一列的时候全部填满就好了。如果有两行或者两列的时候就按田字排,就是两行两列填上马后再两行两列空着,再继续填。其他情况的时候就是全部填白色的区域或者黑色的区域即可
代码如下:
#include

using namespace std;
char chess[205][205];
int ans=0;

int main()
{
int t;
cin>>t;
for(int i=1;i<=t;i++){
int m,n;
int a,b;
cin>>m>>n;
if(m==1||n==1)
{
ans=max(m,n);
}
else if(m==2||n==2)
{
if(m!=2)swap(m,n);
ans=n/44+min(2,n%4)2;//首先看有多少个块,最后一个块如果不满四个就利用min算个数
}
else
{
ans=(nm+1)/2;//如果是偶数时棋盘总数也是偶数,同时棋盘就黑白两种颜色,不管咋样都是行数列数/2,如果都是奇数时棋盘总数是奇数,这时候就要棋盘除以2+1的时候就是最多的棋子数量。
}
cout<<"Case "<<i<<": "<<ans<<endl;}
return 0;
}

全部评论

相关推荐

在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。 建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分
点赞 评论 收藏
分享
KKorz:是这样的,还会定期默写抽查
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务