2084: J 少年!战吧!大模拟!

内存限制:128 MB 时间限制:5 S
题面:传统 评测方式:文本比较 上传者:
提交:1 通过:1

题目描述

                          少年!战吧!大模拟!

 

    好吧,如题目所示,这就是一道大模拟!sailspark的目标就是拖住神牛AK的步伐!所以,战吧!少年!接近完整规则的国际象棋大模拟!

    考虑到大家可能不会下国际象棋,所以以下是本题所要用到的国际象棋的所有规则。

 

1.棋子的布局 

如图: 
每方的次底线各摆8个兵,每方的底线由外向内依次是车、马、象。 
底线中间的两个格子摆王和后,白后在白格,黑后在黑格,白王在黑格,黑王在白格。 

 

2.走棋规则
对局由白方先行,每次走一步,双方轮流行棋,直到对局结束。  

下面介绍各个棋子的走棋规则: 

●  
横、竖、斜都可以走,每次限走一格。 
特殊:如果将要移动到的位置受到对方棋子的攻击(王被照将),则王不能移动到这个位置。 

● 
横、竖、斜都可以走,格数不受限制,但不能越子。 

● 
只能斜走,格数不限,不能越子。 

● 
每步棋先横走或竖走一格,然后再斜走一格,可以越子,没有中国象棋中蹩马腿的限制。 

● 
横、竖均可以走,不能斜走。格数不受限制,不能越子。 

● 
只能向前直走,每次只能走一格。

● 兵的升变 

任何一个兵直进达到对方底线时,玩家必须把该兵升变为车、马、象或后之中的一枚棋子。

6.吃子规则 

玩家棋子移动到的位置如果有对方的棋子,则吃掉对方的这个棋子,并占据该格。 

特殊: 
兵的移动和吃子规则是直进斜吃,如果兵的斜进一格有对方棋子,则兵可以吃掉这个棋子,并且占据该格。 

 7.攻击和将军 

如果一个棋子能够根据移动和吃子规则在下一步吃掉对方的某个棋子,则称为攻击对方的这个棋子。 

一方的王受到对方棋子攻击时,称为王被照将,攻击方称为将军。 

此时被攻击方的下一步走子必须立即应将,如果无论怎样走子都无法避开被照将的情况,王即被将死。 

 

 

现在我们给出一个国际象棋的残局,轮到白方走棋,判断白方能否一步杀,即白方是否可能在移动某个棋子之后,使得黑方的王被将死。

本题中白方棋子用大写字母表示,黑方棋子用小写字母。同时K(k)为王,Q(q)为后,B(b)为象,N(n)为马,R(r)为车,P(p)为兵棋盘左上角为(0,0),右下角(7,7),左下角(7,0)。

输入格式

:多组数据,每组数据第一行是数字t,表示双方棋子总个数,然后是t行,每行以type x y的形式给出,type为棋子类型,x y分别是坐标。

输出格式

如果白方能达成一步杀则输出"Yes"否则输出"No"

输入样例 复制

5
r 0 5
k 0 6
P 2 6
Q 4 7
K 6 6

输出样例 复制

Yes

数据范围与提示

这是样例1的示意图,其中后走到(1,7)即图中7h位置可达成一步杀。