UVA278 Chess

分析

这是一个分类讨论的题目,不需要太多的技巧,但是需要一定的耐心与数学功底。

后可以横、竖、斜着走。因此一行只能有一个皇后,一列也只能有一个皇后(要不然就会互吃),所以能放置 \(\min(n,m)\) 个皇后。

车和后差不多。也是一行只能有一个,一列也只能有一个,也只能放置 \(\min(n,m)\) 个。

马走日字,下过国际象棋的同学知道,马会走到其他颜色的格子上,且对角线上不会被攻击。所以我们可以都放在对角线上,也就是说可以放置 \(\frac {nm+1}{2}\)个。

王控制周围8个格子,也就是说上下左右以及四个角都被王所控制,那么我们可以每行隔一个格子放一个,每列也隔一个棋子放一个,这样互相就不会攻击了。答案是 \(((n+1) \div 2)((m+1) \div 2)\)

奉上代码

现在好像还没有C++的代码,那我就来展示一下我的代码。

#include<bits/stdc++.h>
using namespace std;

int t,m,n;char op;

int main(){
	cin>>t;
	while(t--){
		cin>>op>>m>>n;
		switch(op){
			case 'Q':
				cout<<min(m,n);
				break;
			case 'r':
				cout<<min(n,m);
				break;
			case 'k':
				cout<<(n*m)/2;
				break;
			case 'K':
				cout<<((n+1)/2)*((m+1)/2);
				break;
		}
		cout<<endl;
	}
	return 0;
}
posted @ 2022-01-27 10:19  蒟蒻xiezheyuan  阅读(23)  评论(0编辑  收藏  举报