• Xuzhou Winter Camp 1C(模拟)


    #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 ");
                            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 ");
            else
                printf("YES ");
        }
        return 0;
    }

    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    线程系列2---线程同步
    off() 方法 与 unbind() 方法移除绑定事件的处理程序。one()函数用于为每个匹配元素的一个或多个事件绑定一次性事件处理函数
    animation css3动画与CSS3 @keyframes担配使用创建往复平缓动画
    querySelector 和 querySelectorAll 的使用
    js实现浏览器兼容复制功能
    evaluateScript--evaluatePopoverScript--区别
    appcan 跨窗口处理方法 appcan.window.evaluateScript({name,scriptContent,type})使用解读
    条件注释判断浏览器<!--[if !IE]><!--[if IE]><!--[if lt IE 6]><!--[if gte IE 6]>
    stop() 是用于停止动画 :animated 用于判断动画是否在进行中
    CSS3的calc()使用
  • 原文地址:https://www.cnblogs.com/ldudxy/p/10301690.html
Copyright © 2020-2023  润新知