「杂题乱刷」CF1221B

原题链接

CF1221B Knights

题目简述

在一个 n×n 的棋盘上放置黑马和白马,给出一个放置方式,使得黑马和白马之间的冲突数最多。

解题思路

这道题是一道贪心构造题,因为马每一步有 8 种移动方案,而我们假设将这个棋盘进行黑白交替染色,则会得到下图:

不难得出结论,如果马在黑色的格子上,则下一步必定会走到白色的格子上,如果马在白色的格子上,则下一步必定会走到黑色的格子上,所以,我们要将黑马放在同色的格子上,白马也要放在与黑马放置的格子的相反颜色的格子里,不难发现,我们设每个格子的横轴为 x,纵轴为 y,则如果(x+y)%2==0,那么这个格子就为黑色的格子,否则这个格子就为白色的格子。

参考代码

#include<bits/stdc++.h>
using namespace std;
#define QwQ return 0
long long n;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if((i+j)%2==0)//如果为黑色格子,就放黑色的马 
				cout<<"B";
			else //否则放白色的马
				cout<<"W";
		}
		cout<<endl;
	}
	QwQ;//华丽的结束
}

posted @   wangmarui  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示