题意:背景就是象棋,

题解:坑点1(wa的第一天):将军可以吃掉相邻的棋子,(然行列也写反了orz)

  坑点2(wa的第二天):将军到马要反过来写,边界有误,并且第一次碰到的车才算(写到后来都忘了)

#define _CRT_SECURE_NO_WARNINGS
#include<cmath>
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<cstring>
using namespace std;
#define rep(i,t,n) for(int i =(t);i<=(n);++i)
#define per(i,n,t) for(int i =(n);i>=(t);--i)
#define mmm(a,b) memset(a,b,sizeof(a)) const int maxn = 1e3 + ;
int a[maxn];
typedef long long ll;
int dr = ;
int n, sr, sc; double z;
char mmp[][]; int dir[][] = { , ,,, ,-, -, };
bool check(int r, int c) {
if (r < || r> || c < || c>)return ;
int nothas = ;
if (mmp[r][c])nothas == ;
//up
int nr = r, nc = c; int one = ,first = ;
while (nr--&&nr>=) {
if (first&&mmp[nr][nc] == 'R')return ; if (one&&mmp[nr][nc] == 'C')return ; if (mmp[nr][nc] != )if (first == )one = ,first=; else one = ; }
//down
nr = r, nc = c; one = ; first = ;
while (nr++&&nr <= ) {
if (first&&(mmp[nr][nc] == 'R' || mmp[nr][nc] == 'G'))return ; if (one&&mmp[nr][nc] == 'C')return ; if (mmp[nr][nc] != )if (first == )one = , first = ; else one = ;
}
//left
nr = r, nc = c; one = ; first = ;
while (nc++&&nc <= ) {
if (first&&mmp[nr][nc] == 'R')return ; if (one&&mmp[nr][nc] == 'C')return ; if (mmp[nr][nc] != )if (first == )one = , first = ; else one = ;
}
//right
nr = r, nc = c; one = ; first = ;
while (nc--&&nc >= ) {
if (first&&mmp[nr][nc] == 'R')return ; if (one&&mmp[nr][nc] == 'C')return ; if (mmp[nr][nc] != )if (first == )one = , first = ; else one = ; }
//horse
nr = r, nc = c;
if (mmp[nr + ][nc+] == ) {if (mmp[nr + ][nc + ] == 'H' || mmp[nr + ][nc + ] == 'H')return ;}
if (mmp[nr + ][nc - ] == ) { if (mmp[nr + ][nc - ] == 'H' || mmp[nr + ][nc - ] == 'H')return ; }
if (nr>=&&mmp[nr-][nc+] == ) { if (mmp[nr-][nc + ] == 'H' || (nr>=&&mmp[nr-][nc + ] == 'H'))return ; }
if (nr >= && mmp[nr - ][nc - ] == ) { if (mmp[nr - ][nc - ] == 'H' || (nr >= && mmp[nr - ][nc - ] == 'H'))return ; } return ;
}
int main() { while (cin >> n >> sr >> sc && (n || sr || sc)) {
mmm(mmp, ); rep(i, , n) {
char c;
cin >> c;
int x, y;
cin >> x >> y;
mmp[x][y] = c; }
int cnt = ;
rep(i, , ) {
if (check(sr + dir[i][], sc + dir[i][])) cnt++;
}
if (cnt == )puts("YES");
else puts("NO");
} }
/*
2 3 5
H 2 5
C 1 5 3 1 5
H 4 5
G 10 5
C 7 5 2 1 5
R 4 4
G 10 5 3 1 5
G 10 4
R 5 5
H 3 7 4 1 5
G 10 4
C 6 5
H 5 5
R 1 1 5 1 5
G 10 4
C 6 5
H 5 5
H 4 5
R 1 1 3 1 5
G 10 4
C 2 7
H 3 7 3 1 5
G 10 4
R 5 5
R 1 6 4 1 5
G 10 4
R 5 5
R 1 6
H 3 7 0 0 0 */

第一天的wa

#include<iostream>
#include<string>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<stdio.h>
#include<algorithm>
#include<set>
#include<bitset>
#include<queue>
using namespace std; #define rep(i,j,k) for(int i = (int)j;i <= (int)k;i ++)
#define per(i,j,k) for(int i = (int)j;i >= (int)k;i --)
#define debug(x) cerr<<#x<<" = "<<(x)<<endl
#define mmm(a,b) memset(a,b,sizeof(a))
#define pb push_back
#define eps 1e-7 typedef long long ll;
const int maxn = 1e6 + ;
//const ll mod = 1e9 + 7;
int mmp[][];
int n = ;
int dir[][] = { , ,,, ,-, -, };
struct node {
int x, y, t;
node(int x = , int y = , int t = ) :x(x), y(y), t(t) {}
void sc() { scanf("%d%d", &x, &y); }
}; int vis[][];
string op[];
int r[], c[];
int main()
{
int sr, sc;
begin:
while (cin >> n>>sr>>sc&&(n||sr||sc)) { mmm(mmp, );
mmm(vis, );
rep(i, , n) {
//string op; int r, c;
cin >> op[i] >> r[i] >> c[i];
vis[r[i]][c[i]] = ;
}
rep(k, , n) {
if (op[k] == "R") {
int i = r[k];
int ok = ;
while (i--) {
if (vis[i][c[k]] )ok = ;
if (ok)mmp[i][c[k]] = ;
}
i = r[k];
ok = ;
while (i++&i<=) {
if (vis[i][c[k]] )ok = ;
if (ok)mmp[i][c[k]] = ;
}
int j = c[k];
ok = ;
while (j--) {
if (vis[r[k]][j] && ok == )ok = ;
if (ok)mmp[r[k]][j] = ;
}
j = c[k];
ok = ;
while (j++&&j<=) {
if (vis[r[k]][j] && ok == )ok = ;
if (ok)mmp[r[k]][j] = ;
}
//rep(i, 1, 10)mmp[i][c[k]] = 1;
//rep(j, 1, 9)mmp[r[k]][j] = 1;
}
if (op[k] == "G") {
per(i, , ) { if (vis[i][c[k]])break; if (i == sr && sc == c[k]) { puts("NO"); goto begin; } mmp[i][c[k]] = ; } }
if (op[k] == "C") {
int i = r[k];
int ok = ;
while (i--) {
if (vis[i][c[k]]) if( ok == )ok = ;
else ok = ; if (ok)mmp[i][c[k]] = ;
}
i = r[k];
ok = ;
while (i++&&i<=) {
if (vis[i][c[k]]) if (ok == )ok = ;
else ok = ; if (ok)mmp[i][c[k]] = ;
}
int j = c[k];
ok = ;
while (j--) {
if (vis[r[k]][j])if(ok == )ok = ;
else ok = ; if (ok)mmp[r[k]][j] = ;
}
while (j++) {
if (vis[r[k]][j]) if( ok == )ok = ;
else ok = ; if (ok)mmp[r[k]][j] = ;
}
}
if (op[k] == "H") {
if (c[k] + <= )if (!vis[r[k]][c[k] + ])mmp[r[k] + ][c[k] + ] = mmp[r[k] - ][c[k] + ] = ;
if (c[k] - <= )if (!vis[r[k]][c[k] - ])mmp[r[k] + ][c[k] - ] = mmp[r[k] - ][c[k] - ] = ;
if (r[k] - <= )if (!vis[r[k]-][c[k]])mmp[r[k] - ][c[k] - ] = mmp[r[k] - ][c[k] +] = ;
if (r[k] + <= )if (!vis[r[k] + ][c[k]])mmp[r[k] + ][c[k] - ] = mmp[r[k] + ][c[k] + ] = ;
}
}
int ok=;
rep(i, , ) {
int dr = sr + dir[i][];
int dc = sc + dir[i][];
if (dr > || dr < || dc> || dc < )continue;
if (mmp[dr][dc] == )ok = ;
}
rep(i, , ) {rep(j, , )cout << mmp[i][j] << ' ';cout << endl;}
if (ok)puts("NO");
else puts("YES");
} }
/* 2 2 5
H 2 3
R 2 4 */

【每日一题】 UVA - 1589 Xiangqi 函数+模拟 wa了两天的更多相关文章

  1. ●UVa 1589 Xiangqi(模拟)

    ●赘述题意 给出一个中国象棋残局,告诉各个棋子的位置,黑方只有1枚“将”,红方有至少2枚,至多7枚棋子,包含1枚“帅G”,和若干枚“车R”,“马H”,“炮C”.当前为黑方的回合,问黑方的“将”能否在移 ...

  2. UVA 1589:Xiangqi (模拟 Grade D)

    题目: 象棋,黑棋只有将,红棋有帅车马炮.问是否死将. 思路: 对方将四个方向走一步,看看会不会被吃. 代码: 很难看……WA了很多发,还越界等等. #include <cstdio> # ...

  3. Uva - 1589 - Xiangqi

    Xiangqi is one of the most popular two-player board games in China. The game represents a battle bet ...

  4. [LeetCode每日一题]1143. 最长公共子序列

    [LeetCode每日一题]1143. 最长公共子序列 问题 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度.如果不存在 公共子序列 ,返回 0 . 一个字符串 ...

  5. PL/SQL Challenge 每日一题:2014-3-14 11gR2中带RELIES_ON子句的RESULT_CACHE函数

    PL/SQL Challenge 每日一题:2014-3-14 11gR2中带RELIES_ON子句的RESULT_CACHE函数 最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可 ...

  6. 【python】Leetcode每日一题-笨阶乘

    [python]Leetcode每日一题-笨阶乘 [题目描述] 通常,正整数 n 的阶乘是所有小于或等于 n 的正整数的乘积.例如,factorial(10) = 10 * 9 * 8 * 7 * 6 ...

  7. 老男孩IT教育-每日一题汇总

    老男孩IT教育-每日一题汇总 第几天 第几周 日期 快速访问链接 第123天 第二十五周 2017年8月25日 出现Swap file….already exists以下错误如何解决? 第122天 2 ...

  8. CISP/CISA 每日一题 四

    CISA 每日一题(答) 连续在线审计技术: 1.系统控制审计检查文件和内嵌审计模型(SCARF/EAM):非常复杂,适用于正常处理不能被中断:通过在组织的主机应用系统中内嵌经特别编写的审计软件,使审 ...

  9. CISP/CISA 每日一题 三

    CISA 每日一题(答) 测试应用控制的有效性包括: 分析计算机应用程序.测试计算机应用程序控制.选择和监控数据处理事务. 测试应用系统技术: 快照.映射.追踪和标识.测试数据(在真实的系统中的仿真交 ...

随机推荐

  1. SNF快速开发平台MVC-甘特图

    上个月做了CS框架的甘特图样例,本月框架组人员又实现了BS的甘特图效果,而且效果也很不错哦 图形框可以直接拖拽调整时长时间: 新增节点:

  2. 微信公众号 几种移动端UI框架介绍

    微信公众号开发,主要是移动端网页的页面开发,在这里推荐3个移动端UI框架:WeUI.SUI和Mint UI. 1. WeUI 1.1 WeUI WeUI是微信官方设计团队为微信 Web 开发量身设计, ...

  3. Nginx 配置TCP代理

    Nginx 1.9 版本以后增加了stream模块,可以对tcp,udp请求进行代理和负载均衡了,今天来体验一下首先编译安装过程configure的时候增加选项 --with-stream --wit ...

  4. python + django + dwebsocket 实现简单的聊天室

    使用库dwebsocket,具体参考此处 views.py: from dwebsocket.decorators import accept_websocket,require_websocket ...

  5. 《软件测试自动化之道》读书笔记 之 底层的Web UI 测试

    <软件测试自动化之道>读书笔记 之 底层的Web UI 测试 2014-09-28 测试自动化程序的任务待测程序测试程序  启动IE并连接到这个实例  如何判断待测web程序完全加载到浏览 ...

  6. 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求(转)

    通用辅助类 下面是我编写的一个辅助类,在这个类中采用了HttpWebRequest中发送GET/HTTP/HTTPS请求,因为有的时候需要获取认证信息(如Cookie),所以返回的是HttpWebRe ...

  7. 【九天教您南方cass 9.1】02 从地形图上绘制纵横断面

    同学们大家好,欢迎收看由老王测量上班记出品的cass9.1视频课程, 测量空间的[九天教您南方cass]专栏是九天老师专门开设cass免费教学班.希望能帮助那些刚入行的同学,并祝您一臂之力. [点击索 ...

  8. Weebly免费自助建站空间:可视化编辑网页搭建网站和绑定域名方法

    Weebly空间来自美国,已经稳定运行了有多年了,2007年被Time 评为50个最佳网站,属自助建站模式,功能强大.部落在09年时介绍了weebly.com自助建站服务,没有想到这多年来,Weebl ...

  9. linux环境中,top命令中,对command的命令进行扩展查看详情?

    需求说明: 在使用top命令进行资源情况使用查看时,经常出现以下情况: 备注:也就是说,在COMMAND列中,有多个java进程,想要知道每个java具体的对应的是哪个程序的进程. 通过top命令的c ...

  10. jexl2 执行字符串Java代码

    一,引入jar包, <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-jexl --><depen ...