2011 Asia Fuzhou Regional Contest-1001 hdu4121 Xiangqi
来源:互联网 发布:淘宝上的老凤祥 编辑:程序博客网 时间:2024/05/16 11:58
http://acm.hdu.edu.cn/showproblem.php?pid=4121
模拟
#include <iostream>#include <cstdio>#include <memory.h>#include <algorithm>#include <cmath>#include <string>#include <climits>using namespace std;const int dx[5]={0,0,0,1,-1};const int dy[5]={0,1,-1,0,0};const int dhx[8]={1,2,2,1,-1,-2,-2,-1};const int dhy[8]={-2,-1,1,2,2,1,-1,-2};const int bx[8]={1,1,1,1,-1,-1,-1,-1};const int by[8]={-1,-1,1,1,1,1,-1,-1};int a[20][20];int max4(int a,int b,int c,int d){ return max(max(a,b),max(c,d));}bool in(int x,int y){ return (x>0 && x<11 && y>0 && y<10);}bool in_g(int x,int y){ return ((y>3 && y<7 && x<4 && x>0)||(y>3 && y<7 && x<11 && x>7));}int main(){ char ch; int c,x0,y0,t1,t2,gx,gy; //while (scanf("%d%d%d",&c,&x0,&y0)!=EOF && c && x0 && y0) while (cin>>c>>x0>>y0 && c+x0+y0) { memset(a,-1,sizeof(a)); for (int i=0;i<c;i++) { cin>>ch>>t1>>t2; //scanf("%s%d%d",ch,&t1,&t2); if (ch=='G'){a[t1][t2]=0;gx=t1;gy=t2;} else if (ch=='R') a[t1][t2]=1; else if (ch=='H') a[t1][t2]=2; else if (ch=='C') a[t1][t2]=3; } bool flag=true; for (int i=1;i<5;i++) { bool ju=false; int tx=x0+dx[i]; int ty=y0+dy[i]; if (!in_g(tx,ty)) continue; for (int j=0;j<8;j++) { int hx=tx+dhx[j]; int hy=ty+dhy[j]; if (!in(hx,hy)) continue; if (a[tx+bx[j]][ty+by[j]]==-1 && a[hx][hy]==2) { ju=true; break; } } if (ju) continue; bool j1=false; for (int j=1;j<=10-tx;j++) { if (a[tx+j][ty]!=-1) { if (!j1 && a[tx+j][ty]==1) {ju=true;break;} else if (!j1 && a[tx+j][ty]!=-1) {j1=true;continue;} if (j1 && a[tx+j][ty]==3) {ju=true;break;} else if (j1 && a[tx+j][ty]!=-1) break; } } if (ju) continue; j1=false; for (int j=1;j<=tx-1;j++) { if (a[tx-j][ty]!=-1) { if (!j1 && a[tx-j][ty]==1) {ju=true;break;} else if (!j1 && a[tx-j][ty]!=-1){j1=true;continue;} if (j1 && a[tx-j][ty]==3) {ju=true;break;} else if (j1 && a[tx-j][ty]!=-1) break; } } if (ju) continue; j1=false; for (int j=1;j<=9-ty;j++) { if (a[tx][ty+j]!=-1) { if (!j1 && a[tx][ty+j]==1) {ju=true;break;} else if (!j1 && a[tx][ty+j]!=-1) {j1=true;continue;} if (j1 && a[tx][ty+j]==3) {ju=true;break;} else if (j1 && a[tx][ty+j]!=-1) break; } } if (ju) continue; j1=false; for (int j=1;j<=ty-1;j++) { if (a[tx][ty-j]!=-1) { if (!j1 && a[tx][ty-j]==1) {ju=true;break;} else if (!j1 && a[tx][ty-j]!=-1) {j1=true;continue;} if (j1 && a[tx][ty-j]==3) {ju=true;break;} else if (j1 && a[tx][ty-j]!=-1)break; } } if (ju) continue; bool j2;//false no zi if (ty==gy) { j2=false; for (int k=tx+1;k<gx;k++) if (a[k][gy]!=-1) {j2=true;break;} } else j2=true; if (!j2) ju=true;//can checkmate if (ju==false) {flag=false;break;} } if (flag) cout<<"YES"<<endl;//printf("YES\n"); else cout<<"NO"<<endl;//printf("NO\n"); } return 0;}
- 2011 Asia Fuzhou Regional Contest-1001 hdu4121 Xiangqi
- 2011 Asia Fuzhou Regional Contest
- 2011 Asia Fuzhou Regional Contest
- 2011 Asia Fuzhou Regional Contest-1002 hdu4122
- 【模拟】2011 Asia Fuzhou Regional Contest hdu 4121
- 2011 Asia Fuzhou Regional Contest-1005 hdu4125 Moles
- 2011 Asia Fuzhou Regional Contest-1003 hdu4123 Bob’s Race
- 2010 Asia Hangzhou/Fuzhou Regional Contest
- Regionals 2011 :: Asia - Fuzhou A - Xiangqi
- 【疑问】2011 Asia Fuzhou Regional A
- 2010 Asia Fuzhou Regional Contest POJ 3697 Selecting courses
- 2010 Asia Fuzhou Regional Contest 之 A hard Aoshu Problem
- 2010 Asia Fuzhou Regional Contest 之 Selecting courses
- Fuzhou 2011 Xiangqi
- [POJ 4001-4010][2011 Asia Fuzhou Regional Contest]2011 ACM 福州赛区现场赛题解(不断更新)
- 2011 Asia Dalian Regional Contest
- 2011 Asia ChengDu Regional Contest
- hdu 3698 Let the light guide us【线段树+dp】 2010 Asia Fuzhou Regional Contest
- 命令行邮件发送工具
- 一位大牛整理的Python资源
- POJ 1579 Function Run Fun
- hdu 4340 Capturing a country(树形DP) 2012 Multi-University Training Contest 5
- Android-2.2display系统介绍-SW架构
- 2011 Asia Fuzhou Regional Contest-1001 hdu4121 Xiangqi
- 输出和为一个给定整数的所有组合
- C++程序员必会知识(搜狐)
- shell命令trap用法
- 【IOI 1999】橱窗布置 (DP)
- POJ 1382 Radar Installation
- Android display架构分析二-SW架构分析
- 读文件file1.txt的内容到file2.txt
- 《花开半夏》--二十一岁·在一起