标签:只能 格子 一个 cin Chess 放置 UVA278 op
分析
这是一个分类讨论的题目,不需要太多的技巧,但是需要一定的耐心与数学功底。
后
后可以横、竖、斜着走。因此一行只能有一个皇后,一列也只能有一个皇后(要不然就会互吃),所以能放置 \(\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;
}
标签:只能,格子,一个,cin,Chess,放置,UVA278,op 来源: https://www.cnblogs.com/xiezheyuan/p/note-rem-uva278.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。