#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
int x[10],y[10];
int dangerous[17][17];
char z[10];
int vis[17][17];
char s[100][100];
int main(){
    int n;
    while(~scanf("%d",&n)){
        memset(x,0,sizeof(x));
        memset(y,0,sizeof(y));
        memset(z,0,sizeof(z));
        memset(vis,0,sizeof(vis));
        memset(s,0,sizeof(s));
        memset(dangerous,0,sizeof(dangerous));
        int a,b;
        scanf("%d%d",&a,&b);
        if(n==0)
            break;
        for(int i=1;i<=n;i++){
            cin>>z[i]>>x[i]>>y[i];//getchar();scanf("%c%d%d",&z[i],&x[i],&y[i]);这种输入过不了
            vis[x[i]][y[i]]=1;
        }
        int flag=0;
        for(int i=1;i<=n;i++){
            flag=0;
            if(z[i]=='G'){
                for(int j=x[i]-1;j>=1;j--){
                    if(!vis[j][y[i]])
                        dangerous[j][y[i]]=1;
                    else{
                        dangerous[j][y[i]]=1;
                        break;
                    }
                }
                if(b==y[i]){
                    flag=0;
                    for(int ii=a+1;ii<x[i];ii++){
                        if(vis[ii][b]==1)
                            flag=1;
                    }
                    if(!flag){
                        printf("NO\n");
                        flag=10;
                        break;
                    }
                }
            }
            else if(z[i]=='R'){
                int ii=0;
                for(ii=x[i]-1;ii>=1;ii--){
                    if(!vis[ii][y[i]])
                        dangerous[ii][y[i]]=1;
                    else{
                        dangerous[ii][y[i]]=1;
                        break;
                    }
                }
                //dangerous[ii][y[i]]=1;
                for(ii=x[i]+1;ii<=10;ii++){
                    if(!vis[ii][y[i]])
                        dangerous[ii][y[i]]=1;
                    else{
                        dangerous[ii][y[i]]=1;
                        break;
                    }
                }
                //dangerous[ii][y[i]]=1;
                for(ii=y[i]-1;ii>=1;ii--){
                    if(vis[x[i]][ii]==0)
                        dangerous[x[i]][ii]=1;
                    else{
                        dangerous[x[i]][ii]=1;
                        break;
                    }
                }
                //dangerous[x[i]][ii]=1;
                for(ii=y[i]+1;ii<=9;ii++){
                    if(vis[x[i]][ii]==0)
                        dangerous[x[i]][ii]=1;
                    else{
                        dangerous[x[i]][ii]=1;
                        break;
                    }
                }
                //dangerous[x[i]][ii]=1;
            }
            else if(z[i]=='C'){
                flag=0;
                for(int ii=x[i]-1;ii>=2;ii--){
                    if(vis[ii][y[i]]==1){
                        flag=ii;
                        break;
                    }
                }
                if(flag){
                    for(int ii=flag-1;ii>=1;ii--){
                        if(vis[ii][y[i]]==0)
                            dangerous[ii][y[i]]=1;
                        else{
                            dangerous[ii][y[i]]=1;
                            break;
                        }
                    }
                }
                flag=0;
                for(int ii=x[i]+1;ii<=9;ii++){
                    if(vis[ii][y[i]]==1){
                        flag=ii;
                        break;
                    }
                }
                if(flag){
                    for(int ii=flag+1;ii<=10;ii++){
                        if(vis[ii][y[i]]==0)
                            dangerous[ii][y[i]]=1;
                        else{
                            dangerous[ii][y[i]]=1;
                            break;
                        }
                    }
                }
                flag=0;
                for(int ii=y[i]-1;ii>=2;ii--){
                    if(vis[x[i]][ii]==1){
                        flag=ii;
                        break;
                    }
                }
                if(flag){
                    for(int ii=flag-1;ii>=1;ii--){
                        if(vis[x[i]][ii]==0)
                            dangerous[x[i]][ii]=1;
                        else{
                            dangerous[x[i]][ii]=1;
                            break;
                        }
                    }
                }
                flag=0;
                for(int ii=y[i]+1;ii<=8;ii++){
                    if(vis[x[i]][ii]==1){
                        flag=ii;
                        break;
                    }
                }
                if(flag){
                    for(int ii=flag+1;ii<=9;ii++){
                        if(vis[x[i]][ii]==0)
                            dangerous[x[i]][ii]=1;
                        else{
                            dangerous[x[i]][ii]=1;
                            break;
                        }
                    }
                }
            }
            else if(z[i]=='H'){
                if(vis[x[i]-1][y[i]]==0){
                    //if(!vis[x[i]-2][y[i]-1])
                        dangerous[x[i]-2][y[i]-1]=1;
                    //if(!vis[x[i]-2][y[i]+1])
                        dangerous[x[i]-2][y[i]+1]=1;
                }
                if(vis[x[i]+1][y[i]]==0){
                    //if(!vis[x[i]+2][y[i]-1])
                        dangerous[x[i]+2][y[i]-1]=1;
                    //if(!vis[x[i]+2][y[i]+1])
                        dangerous[x[i]+2][y[i]+1]=1;
                }
                if(vis[x[i]][y[i]-1]==0){
                    //if(!vis[x[i]-1][y[i]-2])
                        dangerous[x[i]-1][y[i]-2]=1;
                    //if(!vis[x[i]+1][y[i]-2])
                        dangerous[x[i]+1][y[i]-2]=1;
                }
                if(vis[x[i]][y[i]+1]==0){
                    //if(!vis[x[i]-1][y[i]+2])
                        dangerous[x[i]-1][y[i]+2]=1;
                    //if(!vis[x[i]+1][y[i]+2])
                        dangerous[x[i]+1][y[i]+2]=1;
                }
            }
        }
        if(flag==10)
            continue;
        flag=0;
        if(a-1>=1)
            if(!dangerous[a-1][b])
                flag=1;
        if(a+1<=3)
            if(!dangerous[a+1][b])
                flag=1;
        if(b-1>=4)
            if(!dangerous[a][b-1])
                flag=1;
        if(b+1<=6)
            if(!dangerous[a][b+1])
                flag=1;
        if(flag)
            printf("NO\n");
        else
            printf("YES\n");
    }
    return 0;
}

Xuzhou Winter Camp 1C(模拟)的更多相关文章

  1. 2019 wannafly winter camp day 3

    2019 wannafly winter camp day 3 J 操作S等价于将S串取反,然后依次遍历取反后的串,每次加入新字符a,当前的串是T,那么这次操作之后的串就是TaT.这是第一次转化. 涉 ...

  2. 2019 wannafly winter camp

    2019 wannafly winter camp Name Rank Solved A B C D E F G H I J K day1 9 5/11 O O O O O day2 5 3/11 O ...

  3. 线段树优化建图(cf787d, 2019Wannafly Winter Camp Day7 Div1 E)

    线段树优化建图,用于区间到区间建边时降低空间复杂度 建立两颗线段树,一颗in, 代表进入这个区间,一颗out,代表从这个区间出去 in树从父亲向儿子建边,代表宏观进入整个区间,不向下寻找 out树从儿 ...

  4. 2020 CCPC-Wannafly Winter Camp Day2

    2020 CCPC-Wannafly Winter Camp Day2 A 托米的字符串 虽然每个子串出现的概率是相同的,但是同一长度的子串个数是不同的,所以要分别处理.计算出某一长度的情况下,元音字 ...

  5. 2020 CCPC Wannafly Winter Camp Day1 C. 染色图

    2020 CCPC Wannafly Winter Camp Day1 C. 染色图 定义一张无向图 G=⟨V,E⟩ 是 k 可染色的当且仅当存在函数 f:V↦{1,2,⋯,k} 满足对于 G 中的任 ...

  6. CCPC-Wannafly Winter Camp Day5 (Div2, onsite) Sorting(线段树)

    题目链接 题意 对序列进行三种操作: 1.区间求和. 2.将区间小于等于$x$的数不改变相对顺序的前提下放到$x$左边,用同样规则将比$x$大的放到右边. 3.将区间大于$x$的数不改变相对顺序的前提 ...

  7. 秦皇岛winter camp 总结

    冬令营在秦皇岛自闭了七天,很多题目看了都没有思路,或者是不知道怎么敲代码.我发现图论的题,自己连怎么建树都给忘了,想了半天.还有很多自己从未接触过的算法.在说说课堂上课的情况,大部分时间都是全程懵逼的 ...

  8. CCPC-Wannafly Winter Camp Day8 (Div2, onsite)

    咕咕咕.    camp补题. 传送门:https://www.zhixincode.com/contest/29/problems A.Aqours 题意:有一棵有根树,根节点为1,给出每个结点的父 ...

  9. CCPC-Wannafly Winter Camp Day7 D---二次函数【数论】【构造】

    题意: 有三个二次函数,分别是$x^2 + a_1x + b_1$, $x^2 + a_2x + b_2$, $x^2 + a_3x + b_3$ 现在要找三个整数$x_1, x_2, x_3$, 使 ...

随机推荐

  1. 图像处理检测方法 — SIFT和SURF

    0.特征与匹配方法总结汇总对比 参考网址:http://simtalk.cn/2017/08/18/%E7%89%B9%E5%BE%81%E4%B8%8E%E5%8C%B9%E9%85%8D/#ORB ...

  2. 给手机发验证码 综合使用 (忘记密码处理 php发验证码 重置用户密码)

    前台页面 提取手机号调用 jQuery的ajax,到发送验证码 [php] view plain copy <title>找回密码 - 2015年xxx报名系统</title> ...

  3. 2_flyweight, 轻量化模式

    ### instanced rendering. send shared data to gpu just once mesh, texture, leaves push every instance ...

  4. Xposed模块开发学习记录

    Xposed模块相关API可以参考在线文档: https://api.xposed.info/reference/packages.html     入门教程可以参考: https://github. ...

  5. EasyDarwin+ffmpeg进行PC(摄像头+麦克风)流媒体直播服务

    上一回我们描述了用EasyDarwin+ffmpeg进行摄像机直播的过程:ffmpeg推送,EasyDarwin转发,vlc播放 实现整个RTSP直播 我们再进行一个方面的描述,那就是pc摄像头+麦克 ...

  6. MySQL数据库服务器参数优化mycnf,16G内存8核CPU,

    业务场景: 后台支持手机在线更新系统,db服务器内存16G,8核,dell的pc服务器. qps: 200个左右 tps: 1个左右 一分钟50几个 sort_buffer_size = 32M 大了 ...

  7. Python:urllib模块的urlretrieve方法

    转于:https://blog.csdn.net/fengzhizi76506/article/details/59229846 博主:fengzhizi76506 1)功能: urllib模块提供的 ...

  8. 问题13:如何在for语句中迭代多个可迭代的对象

    from random import randint a1 = [randint(10, 50) for _ in range(5)] a2 = [randint(10, 50) for _ in r ...

  9. java 代码。= -=

    package com.da; //toString()方法, //Object类重写... public class ty { private String name; private int ag ...

  10. Linux编程里getopt_long_only函数用法详解

    在程序中难免需要使用命令行选项,可以选择自己解析命令行选项,但是有现成的,何必再造轮子.下面介绍使用getopt_long_only和getopt_long(两者用法差不多)解析命令行选项. 程序中主 ...