SWERC13 Decoding the Hallway
找规律
S+1 = S +'L'+~rev(S)
Problem D
Decoding the Hallway
Problem D
Edward is now 21 years old. He has to appear in an exam to renew his State Alchemist
title. This year the exam is arranged in a bit different way. There will be a long hallway. Each
alchemist will enter the hallway from the left side and come out from the right side and he has to
do this n times. During this tour they have to bend the hallway segments right-left alternatively.
Let’s describe the process in some pictures:
• First time (First picture): Initially, the hallway is a straight line (soft line in the first
picture). So alchemist will bend this segment to right side (he is going from left to right)
like the hard line in the first picture above.
• Second time (Second picture): Now he will find two segments in hallway (like soft line in
picture). So he will bend the first hallway to right, second one to left (like the hard lines).
• Third time (Third picture): Now he will find four segments in the hallway (like the soft
lines) and he will bend them to Right, Left, Right and Left respectively.
• And this goes on for fourth and fifth times in the picture.
Since Full Metal Alchemist Edward is so good, he did it perfectly. Now it is turn of the
judges to check the bending if it is correct or not. The judge enters at the left end and comes
out from the right end. But during his travel he notes down the turning, R for Right and L for
Left. So if n = 1, then the judge would have noted down L. If n = 2, it would have been LLR.
For n = 4, it would have been: LLRLLRRLLLRRLRR.
Since this string will grow exponentially with n, it will be tough to check whether the bending
is correct or not. So the judges have some pre-generated strings and they know whether this
string will appear as substring in the final string or not. Unfortunately the judges have lost the
answer sheet, can you help them to recover it?
INPUT
First line of the test file contains a positive integer T denoting number of test cases (T <=
105). Hence follows T lines, each containing an integer and a string: n S. n is the number of
times Edward has passed through the hallway; and S is the string the judge is going to check
with. You may assume that S consists of only the letters L and R. (n <= 1000, length of S
<= 100). Also you may assume that length of S will not be greater than the length of the
string for n.
OUTPUT
For each test case output the case number and Yes or No denoting whether the string is in
the final string as substring.
1Problem D
Decoding the Hallway
SAMPLE INPUT SAMPLE OUTPUT
2
1 R
4 LRRLL Case 1: No
Case 2: Yes
2
Pro
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string> using namespace std; string letsgo[20],str; string reverse(string x)
{
string y;
int sz=x.length();
for(int i=sz-1;i>=0;i--)
{
y+=x[i];
}
return y;
} string change(string x)
{
string y;
int sz=x.length();
for(int i=0;i<sz;i++)
{
if(x[i]=='L') y+="R";
else y+="L";
}
return y;
} void init()
{
letsgo[1]="L";
for(int i=2;i<=10;i++)
{
int sz=letsgo[i-1].length();
string rletsgo=reverse(letsgo[i-1]);
rletsgo=change(rletsgo);
letsgo[i]=letsgo[i-1]+"L"+rletsgo;
}
} bool check_left(int L,int R)
{
string text;
for(int i=L;i<=R;i++)
{
text+=str[i];
}
int t=letsgo[10].find(str);
if(t<letsgo[10].length())
return true;
return false;
} bool check_right(int L,int R)
{
string text;
for(int i=L;i<=R;i++)
{
text+=str[i];
}
text=reverse(change(text));
int t=letsgo[10].find(str);
if(t<letsgo[10].length())
return true;
return false;
} int main()
{
init();
int n;
int T_T,cas=1;
cin>>T_T;
while(T_T--)
{
cin>>n>>str;
int len=str.length();
cout<<"Case "<<cas++<<": ";
if(n<=10)
{
int t=letsgo[n].find(str);
if(t<letsgo[n].length())
{
puts("Yes");
}
else
{
puts("No");
}
}
else
{
int m=str.length();
bool flag=false;
for(int i=0;i<m;i++)
{
if(str[i]=='L')
{
if(check_left(0,i-1)&&check_right(i+1,m-1))
{
flag=true;
break;
}
}
}
if(flag==false)
{
int t=letsgo[10].find(str);
if(t<letsgo[10].length())
{
flag=true;
}
}
if(flag) puts("Yes");
else puts("No");
}
}
return 0;
}
SWERC13 Decoding the Hallway的更多相关文章
- Block Markov Coding & Decoding
Block Markov coding在一系列block上进行.在除了第一个和最后一个block上,都发送一个新消息.但是,每个block上发送的码字不仅取决于新的信息,也跟之前的一个或多个block ...
- UVA 12897 Decoding Baby Boos 暴力
Decoding Baby Boos Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contes ...
- Base64 Encoding / Decoding in Node.js
Posted on April 20th, 2012 under Node.js Tags: ASCII, Buffer, Encoding, node.js, UTF So how do you e ...
- Codeforces Gym 100002 D"Decoding Task" 数学
Problem D"Decoding Task" Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com ...
- ios Object Encoding and Decoding with NSSecureCoding Protocol
Object Encoding and Decoding with NSSecureCoding Protocol February 27, 2014 MISC NSCoding is a fanta ...
- UVa 213 Message Decoding(World Finals1991,串)
Message Decoding Some message encoding schemes require that an encoded message be sent in two part ...
- FFmpeg的H.264解码器源代码简单分析:熵解码(Entropy Decoding)部分
===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...
- 论文笔记:Decoders Matter for Semantic Segmentation: Data-Dependent Decoding Enables Flexible Feature Aggregation
Decoders Matter for Semantic Segmentation: Data-Dependent Decoding Enables Flexible Feature Aggregat ...
- Decoders Matter for Semantic Segmentation:Data-Dependent Decoding Enables Flexible Feature Aggregation
Decoders Matter for Semantic Segmentation:Data-Dependent Decoding Enables Flexible Feature Aggregati ...
随机推荐
- (3)新概念英语一(11-20)lessons
12 13 14 15 16 17 18无单词 19 20
- HDU 1426 Sudoku Killer(搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1426 题意很明确,让你解一个9*9的数独. DFS即可. #include <cstdio> ...
- Python与数据库[2] -> 关系对象映射/ORM[5] -> 利用 sqlalchemy 实现关系表查询功能
利用 sqlalchemy 实现关系表查询功能 下面的例子将完成一个通过关系表进行查询的功能,示例中的数据表均在MySQL中建立,建立过程可以使用 SQL 命令或编写 Python 适配器完成. 示例 ...
- 数学【P2524】 Uim的情人节礼物·其之弐 (康托展开)
因为某人@ZAGER挖坑让我讲一下康托展开,所以发现了这个题,顺便说一下康托展开是个什么东西 题目概括 给定n与一个数列,要求求出给定数列在n的全排列中的排名(按照字典序从小到大排列) 康托展开 先放 ...
- 洛谷—— P1680 奇怪的分组
https://www.luogu.org/problemnew/show/1680 题目背景 终于解出了dm同学的难题,dm同学同意帮v神联络.可dm同学有个习惯,就是联络同学的时候喜欢分组联络,而 ...
- ASIHTTPREQUEST framework compile error when method is called / link error
never mind!!! duplicate: Error with iOS 5.1 when i use ASIHTTPRequest and SBJSON "I would take ...
- 使用MySQL正则表达式 __MySQL必知必会
正则表达式作用是匹配方本,将一个模式(正则表达式)与一个文本串进行比较. MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据. MySQL仅支持 ...
- Linux操作系统实时性分析
1. 概述 选择一个合适的嵌入式操作系统,可以考虑以下几个因素: 第一是应用.如果你想开发的嵌入式设备是一个和网络应用密切相关或者就是一个网络设备,那么你应该选择用嵌入式Linux或者uCLinux ...
- CPU Cache unCache
CPU uncache 写就可以了 CPU chace这种flag的话 还要flush过去 不然gpu那边拿到的这块buffer里面没有内容 都是空
- 2017.7.7 在eclipse中快速查找类:ctrl+shift+T
快捷键:ctrl+shift+T,用于快速找到某个类.