题目描述

输入描述

2
3 3
…B
…B
BB.
1 3

输出描述

no no yes
no yes no

题意

有一个n*m的棋盘,Alice和Bob轮流进行操作,每操作一步都是从当前点到右边的点或下面的点,如果走到了标志为’A’的点就是Alice赢,如果走到了标志为’B’的点就是Bob赢,如果走到了不能再走的时候还没有决出胜负那就是平局,问Alice在不知道Bob怎么走的情况下能不能稳赢,稳平局,稳输

思路

这是一个dp,状态是三维,dp[i][j][k],k=0代表当前Alice能不能稳赢,k=1代表当前Alice能不能稳平局,k=2代表Alice能不能稳输,dp[i][j][k]表示的是从(i,j)到(n,m)能不能完成这三种状态,然后如果这一步是Alice走的话,也就是当前i+j是偶数,那么就代表是Alice先手,如果它的右边或下边有一个能成功的话那么就行,或者如果当前的位置是’A’的话也行,其他两个跟这个一样,下面看代码把:

#include<bits/stdc++.h>
using namespace std;
const int N = 510;
bool st[N][N];
char s[N][N];
struct node{int x,y;
};
int n,m;
bool dp[N][N][3];
void solve(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%s",s[i]+1);memset(dp,false,sizeof dp);for(int i=n;i>=1;i--){for(int j=m;j>=1;j--){int t = i+j;t &= 1;if(!t){if(s[i][j] == 'A'){dp[i][j][0] = 1;}else if(s[i][j] == 'B'){dp[i][j][2] = 1;}else if(s[i][j] == '.'){if(i == n && j == m){dp[i][j][1] = 1;continue;}if(i < n){dp[i][j][0] |= dp[i+1][j][0];dp[i][j][1] |= dp[i+1][j][1];dp[i][j][2] |= dp[i+1][j][2];}if(j < m){dp[i][j][0] |= dp[i][j+1][0];dp[i][j][1] |= dp[i][j+1][1];dp[i][j][2] |= dp[i][j+1][2];}}}else{if(s[i][j] == 'A'){dp[i][j][0] = 1;}else if(s[i][j] == 'B'){dp[i][j][2] = 1;}else if(s[i][j] == '.'){if(i == n && j == m){dp[i][j][1] = 1;continue;}for(int k=0;k<3;k++) dp[i][j][k] = 1;if(i < n){dp[i][j][0] &= dp[i+1][j][0];dp[i][j][1] &= dp[i+1][j][1];dp[i][j][2] &= dp[i+1][j][2];}if(j < m){dp[i][j][0] &= dp[i][j+1][0];dp[i][j][1] &= dp[i][j+1][1];dp[i][j][2] &= dp[i][j+1][2];}}}}}bool flag[3] = {dp[1][1][0],dp[1][1][1],dp[1][1][2]};if(flag[0]) printf("yes ");else printf("no ");if(flag[1]) printf("yes ");else printf("no ");if(flag[2]) printf("yes\n");else printf("no\n");
}
int main(){int _;scanf("%d",&_);while(_--) solve();return 0;
}

【2022牛客多校第六场 Z题 Game on grid】dp相关推荐

  1. [题解]Shorten IPv6 Address-模拟(2019牛客多校第六场B题)

    题目链接:https://ac.nowcoder.com/acm/contest/886/B 题意: 您将获得一个IPv6地址,该地址是128位二进制字符串.请根据以下规则确定其最短的表示: 以十六进 ...

  2. 2019牛客多校第四场 I题 后缀自动机_后缀数组_求两个串de公共子串的种类数

    目录 求若干个串的公共子串个数相关变形题 对一个串建后缀自动机,另一个串在上面跑同时计数 广义后缀自动机 后缀数组 其他:POJ 3415 求两个串长度至少为k的公共子串数量 @(牛客多校第四场 I题 ...

  3. 牛客多校第六场-H-Pair

    链接:https://ac.nowcoder.com/acm/contest/887/H 来源:牛客网 题目描述 Given three integers A, B, C. Count the num ...

  4. 2019牛客多校训练营第一场 H题 HOR 题解

    题目描述: 输入描述: 输出描述: 示例1: 题解: 更多问题可关注牛客竞赛区,一个刷题.比赛.分享的社区. 传送门:https://ac.nowcoder.com/acm/contest/discu ...

  5. 2019牛客多校训练营第一场 E题 ABBA 题解

    问题描述: 输入描述: 输出描述: 示例1: 题解: 更多问题可关注牛客竞赛区,一个刷题.比赛.分享的社区. 传送门:https://ac.nowcoder.com/acm/contest/discu ...

  6. 2021牛客多校第八场补题 D-OR

    链接:https://ac.nowcoder.com/acm/contest/11259/D 来源:牛客网 题目描述 There are two sequences of length n−1n-1n ...

  7. 2021牛客多校第五场补题

    B-Boxes 链接:https://ac.nowcoder.com/acm/contest/11256/B 来源:牛客网 题目描述 There're nn_{}n​ boxes in front o ...

  8. 2022 年牛客多校第四场补题记录

    A Task Computing 题意:给定长度为 nnn 的序列 {(wi,pi)}\{(w_i,p_i)\}{(wi​,pi​)},从中选出 mmm 项并重新排列得到子序列 {a1,a2,⋯,am ...

  9. 牛客多校第六场 E Androgynos 自补图

    题意: 给定点数,构造自补图,要求输出邻接矩阵,和原图与补图的同构映射. 题解: 只有点数为4k和4k+1的情况才能构造自补图,因为只有这些情况下边数才为偶数. 一种构造方式是,邻接矩阵和同构映射增量 ...

最新文章

  1. IT民工系列——c#操作Microsoft IE,实现自动登录吧!
  2. ubuntu9.10回收站目录
  3. Nagios 监控系列学习 —— 简介和安装
  4. 【线上分享】短视频出海 — 用户体验衡量关键指标与优化策略
  5. Spring事务管理--嵌套事务详解
  6. bzoj 3675: [Apio2014]序列分割
  7. 行云管家堡垒机 导入腾讯云主机
  8. java开发,年薪15W的和年薪50W的差距
  9. Python读取文件时出现UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x80 in position xx: 解决方案
  10. 带参数的RedirectToAction
  11. 使用DQL查询数据(重点)
  12. 蓝桥杯 算法提高 一元三次方程求解
  13. 阿里云大学:云端搭建Linux学习环境
  14. 2020 年,从架构谈起,到 Mesh 结束
  15. nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)
  16. css3箭头水平淡入淡出
  17. 连锁电商线上线下互融互推 店店互推电商方案
  18. Linux shell 批量改后缀名
  19. 微信支付分开通了!对飙芝麻信用分!开通与查看攻略!
  20. 程序员需要了解的硬核知识之控制硬件

热门文章

  1. 亚马逊测评,三分钟带你吃透全过程。
  2. 小程序数据请求的方式和注意事项
  3. Windows 下 Texlive 2018 + sublime3 配置 LaTex 环境 (详细版)
  4. 内网服务器通过代理服务器访问外网
  5. call和calling的用法_call的用法
  6. 这才是SpirngBoot轻松整合MybatisPlus多数据源的正确打开方式
  7. 资产重大变更未发现,安全负责人需要担责吗?
  8. 2022年加氢工艺考试题库模拟考试平台操作
  9. springboot集成普罗米修斯
  10. 关于抗击疫情的网页设计作页源码下载 DW大学生网页大作业 网页设计Div+css