您的位置:首页 > 其它

2018 蓝桥杯省赛 B 组模拟赛(五)H. 程序设计:蒜头君下棋

2018-03-27 17:29 337 查看
       题目链接: https://nanti.jisuanke.com/t/25091

       这道题在做的时候以为和八皇后一样是道搜索题,赛后看了题解才知道是个找规律的题。当棋盘只有一行的时候,把所有点都放上马就行了,当棋盘有两行的时候,规律是放两行空两行

,当行数大于2的时候,棋盘是这样的

,马每次会从白色跳到黑色或者从黑色跳到白色,所以刚开始都摆到一个颜色上面就好了。

       对于第一种情况直接输出m,对于第二种情况,你要考虑m有多长,把OOXX算做一组,然后用m/4算出来有几组,然后因为一组能放4个,所以再乘4,然后再考虑边界,当m%4<2的时候,只能放2*(m%4)个,当m%4>=2的时候最多也只能放2*2个。对于第三种情况就很好解决了,输出n*m+1。细节问题挺多的,比如我自定义了个Min函数就只过了9组样例,还要记得如果n>m的话要交换一下。

AC代码:#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
scanf("%d%d",&n,&m);
if(n>m)swap(n,m);
if(n == 1){
printf("%d\n",m);
}
else if(n == 2){
printf("%d\n",m / 4 * 4 + min(m % 4, 2) * 2);
}
else{
printf("%d\n",(n * m + 1) / 2);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: