题目描述

There are N squares arranged in a row, numbered 1,2,...,N from left to right. You are given a string S of length N consisting of . and #. If the i-th character of S is #, Square i contains a rock; if the i-th character of S is ., Square i is empty.
In the beginning, Snuke stands on Square A, and Fnuke stands on Square B.
You can repeat the following operation any number of times:
Choose Snuke or Fnuke, and make him jump one or two squares to the right. The destination must be one of the squares, and it must not contain a rock or the other person.
You want to repeat this operation so that Snuke will stand on Square C and Fnuke will stand on Square D.
Determine whether this is possible.

Constraints
4≤N≤200000
S is a string of length N consisting of . and #.
1≤A,B,C,D≤N
Square A, B, C and D do not contain a rock.
A, B, C and D are all different.
A<B
A<C
B<D

输入

Input is given from Standard Input in the following format:

N A B C D
S

 

输出

Print Yes if the objective is achievable, and No if it is not.

样例输入

7 1 3 6 7
.#..#..

样例输出

Yes

提示

The objective is achievable by, for example, moving the two persons as follows. (A and B represent Snuke and Fnuke, respectively.)

A#B.#..
A#.B#..
.#AB#..
.#A.#B.
.#.A#B.
.#.A#.B
.#..#AB

 

 
【题解】:
  题目没有给定A,C与B,D之间的关系,所以我们分类讨论,
  如果C==D,则无解,
  如果两个区间不重叠,那么我们只要单独判断每一个区间内是否合法。
  如果两个区间是相交的,那么我们需要判断一下中间是否有三个空位让A跳过去。先判断B是否能到D,如果不能,则无解,如果可以,还需要在路途中A,C路上是否有三个阻碍物,不然无法跳出去。
 
 #include<bits/stdc++.h>
using namespace std ;
const int N = 2e5+;
char s[N];
int main (){
int n,A,B,C,D;
scanf("%d%d%d%d%d",&n,&A,&B,&C,&D);
scanf("%s",s+);
if( C == D ){
printf("No\n");
}else if( C < D ){
int flag = ;
// if( s[C] == '#' || s[D] == '#' ) flag = 0 ;
for ( int i = A ; i < C ; i++ ){
if ( s[i] == '#' && s[i+] == '#' ){
flag = ;
break ;
}
}
for ( int i = B ; i < D ; i++ ){
if ( s[i] == '#' && s[i+] == '#' ){
flag = ;
break ;
}
}
if( flag ){
printf("Yes\n");
}else{
printf("No\n");
}
}else{
int flag = ;
for ( int i = B ; i < D ; i++ ){
if ( s[i] == '#' && s[i+] == '#' ){
flag = ;
break ;
}
}
for ( int i = A ; i < C ; i++ ){
if (
(s[i] == '#' && s[i+] == '#') ||
(s[i] == '#' && i+ == D ) ||
(s[i+] == '#' && i == D )
){
flag = ;
break ;
}
} int f = ;
for ( int i = B ; i <= D- ; i++ ){
if ( s[i-] == '.' && s[i] == '.' && s[i+] == '.' ){
f = ;
break;
}
}
if( flag || f ){
printf("Yes\n");
}else{
printf("No\n");
}
}
return ;
}

Kenken Race

【思维】Kenken Race的更多相关文章

  1. 【AtCoder】AGC034

    AGC034 刷了那么久AtCoder我发现自己还是只会ABCE(手动再见 A - Kenken Race 大意是一个横列,每个点可以跳一步或者跳两步,每个格子是空地或者石头,要求每一步不能走到石头或 ...

  2. [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序

    用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html  目录 马桶排序(令人 ...

  3. Photoshop、Illustrator思维导图笔记

    半年前学习Photoshop时记得的思维导图笔记,可能不是很全,常用的基本都记下了.

  4. CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维

    前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...

  5. 计算机程序的思维逻辑 (8) - char的真正含义

    看似简单的char 通过前两节,我们应该对字符和文本的编码和乱码有了一个清晰的认识,但前两节都是与编程语言无关的,我们还是不知道怎么在程序中处理字符和文本. 本节讨论在Java中进行字符处理的基础 - ...

  6. 计算机程序的思维逻辑 (29) - 剖析String

    上节介绍了单个字符的封装类Character,本节介绍字符串类.字符串操作大概是计算机程序中最常见的操作了,Java中表示字符串的类是String,本节就来详细介绍String. 字符串的基本使用是比 ...

  7. 计算机程序的思维逻辑 (31) - 剖析Arrays

    数组是存储多个同类型元素的基本数据结构,数组中的元素在内存连续存放,可以通过数组下标直接定位任意元素,相比我们在后续章节介绍的其他容器,效率非常高. 数组操作是计算机程序中的常见基本操作,Java中有 ...

  8. 计算机程序的思维逻辑 (33) - Joda-Time

    Joda-Time上节介绍了JDK API中的日期和时间类,我们提到了JDK API的一些不足,并提到,实践中有一个广泛使用的日期和时间类库,Joda-Time,本节我们就来介绍Joda-Time.俗 ...

  9. 计算机程序的思维逻辑 (53) - 剖析Collections - 算法

    之前几节介绍了各种具体容器类和抽象容器类,上节我们提到,Java中有一个类Collections,提供了很多针对容器接口的通用功能,这些功能都是以静态方法的方式提供的. 都有哪些功能呢?大概可以分为两 ...

随机推荐

  1. ubuntu 安装go

    sudo apt install golang-go

  2. Ubuntu下Nginx的安装和卸载

    环境是Ubuntu 16.04 安装: sudo apt-get update sudo apt-get install nginx 卸载: sudo apt-get --purge remove n ...

  3. pwn学习日记Day12 《程序员的自我修养》读书笔记

    目标文件里有什么 ELF各段 代码段 text 数据段 data bss段 只读数据段 rodata 注释信息段 comment 堆栈提示段 .note.GNU-stack comment 存放编译器 ...

  4. 【Phoenix】2、初始化 Phoenix 项目后的 目录结构

    1.当我们创建的时候,Phoenix 为我们建立的根目录架构,如下: ├── _build ├── assets // 这个是放一下静态文件的,不如 js.css img 和 node_module ...

  5. ailoop2里面的1个待考察的,在ailoop3里面的操作。(先使用海巨人,不使用英雄技能召唤图腾的问题)

    承接上一篇博客HearthBuddy Ai 调试实战2 在使用海巨人的时候,少召唤了一个图腾(费用是对的) 研究ailoop2里面4个待考察的,在ailoop3里面的后续操作.ailoop3一共有36 ...

  6. Restorator软件使exe文件都不能打开,exe不支持此接口

    遇到的问题: 下载了一个软件Restorator(资源修改器),填写完注册码之后,所有的exe文件都不能打开了,任务管理器不支持此接口打不开. 问题原因: 软件Restorator关联exe文件,运行 ...

  7. Flutter移动电商实战 --(16)切换后页面状态的保持AutomaticKeepAliveClientMixin

    底栏切换每次都重新请求是一件非常恶心的事,flutter 中提供了AutomaticKeepAliveClientMixin 帮我们完成页面状态保存效果. 1.AutomaticKeepAliveCl ...

  8. 常见浏览器userAgent请求头信息

    if (browser.versions.mobile) {//判断是否是移动设备打开.browser代码在下面 var ua = navigator.userAgent.toLowerCase(); ...

  9. 性能分析 | Java服务器内存过高&CPU过高问题排查

    一.内存过高 1.内存过高一般有两种情况:内存溢出和内存泄漏 (1)内存溢出:程序分配的内存超出物理机的内存大小,导致无法继续分配内存,出现OOM报错 (2)内存泄漏:不再使用的对象一直占据着内存不释 ...

  10. VituralBox从零搭建基于CentOS 7(64位)的Kubernetes+docker集群

    1. 下载CentOS 7官方minimal镜像 2. 安装VituralBox(Windows 10 64位) 3. 安装Git for windows(Windows 10 64位) 4. 安装V ...