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


       题目链接: https://nanti.jisuanke.com/t/25091

       这道题在做的时候以为和八皇后一样是道搜索题,赛后看了题解才知道是个找规律的题。当棋盘只有一行的时候,把所有点都放上马就行了,当棋盘有两行的时候,规律是放两行空两行,当行数大于2的时候,棋盘是这样的2018 蓝桥杯省赛 B 组模拟赛(五)H. 程序设计:蒜头君下棋_第1张图片,马每次会从白色跳到黑色或者从黑色跳到白色,所以刚开始都摆到一个颜色上面就好了。

       对于第一种情况直接输出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 
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;
}



你可能感兴趣的:(2018 蓝桥杯省赛 B 组模拟赛(五)H. 程序设计:蒜头君下棋)