提示: 欢迎访问OurACM平台。
Problem 1680 中国象棋

Accept: 86    Submit: 321
Time Limit: 1000 mSec    Memory Limit : 32768 KB

Problem Description

象棋是由两人轮流走子,以“将死”或“困毙”对方将(帅)为胜的一种棋类运动,有着数以亿计的爱好者。它不仅能丰富文化生活,陶冶情操,更有助于开发智力,启迪思维,锻炼辨证分析能力和培养顽强的意志。
对局时,由执红棋的一方先走,双方轮流各走一着,直至分出胜、负、和,对局即终了。轮到走棋的一方,将某个棋子从一个交叉点走到另一个交叉点,或者吃掉对方的棋子而占领其交叉点,都算走一着。双方各走一着,称为一个回合。
凡走子直接攻击对方将帅者谓之“照着”,又称“照将”或“将军”。给你一个棋局,判断红方是否照将黑方。
象棋中各个棋子的英语单词如下:
  • 车:Rooks
  • 马:Knights (Mao)
  • 象/相:Elephants
  • 士/仕:Mandarins
  • 将/帅:King /General
  • 炮:Cannons (Pao)
  • 卒/兵:Pawns

Input

输入的第一行是一个数字n(n<100),表示输入棋局个数。 对于每个棋局:第一行有两个整数r,b,r表示红方棋子数,b表示黑方棋子数。接下来r行{int,char,string}表示红方棋子及位置;再接下来b行{int,char,string}表示黑方棋子及位置。如:1 E King 表示上图黑方将的位置。(我们保证各个棋局都是存在的)

Output

对于每个棋局,如果红方照将黑方输出”Yes!”否则”No!”。

Sample Input

1 2 1 5 E Rooks 10 D King 1 E King

Sample Output

Yes!

Source

FOJ月赛-2009年2月-CCQ

Submit  Back  Status  Discuss