找规律

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的更多相关文章

  1. Block Markov Coding & Decoding

    Block Markov coding在一系列block上进行.在除了第一个和最后一个block上,都发送一个新消息.但是,每个block上发送的码字不仅取决于新的信息,也跟之前的一个或多个block ...

  2. UVA 12897 Decoding Baby Boos 暴力

    Decoding Baby Boos Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contes ...

  3. 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 ...

  4. Codeforces Gym 100002 D"Decoding Task" 数学

    Problem D"Decoding Task" Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com ...

  5. ios Object Encoding and Decoding with NSSecureCoding Protocol

    Object Encoding and Decoding with NSSecureCoding Protocol February 27, 2014 MISC NSCoding is a fanta ...

  6. UVa 213 Message Decoding(World Finals1991,串)

     Message Decoding  Some message encoding schemes require that an encoded message be sent in two part ...

  7. FFmpeg的H.264解码器源代码简单分析:熵解码(Entropy Decoding)部分

    ===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...

  8. 论文笔记:Decoders Matter for Semantic Segmentation: Data-Dependent Decoding Enables Flexible Feature Aggregation

    Decoders Matter for Semantic Segmentation: Data-Dependent Decoding Enables Flexible Feature Aggregat ...

  9. Decoders Matter for Semantic Segmentation:Data-Dependent Decoding Enables Flexible Feature Aggregation

    Decoders Matter for Semantic Segmentation:Data-Dependent Decoding Enables Flexible Feature Aggregati ...

随机推荐

  1. JavaScript实现数字配对游戏

    游戏效果如下图所示: 规则: 在4X5的格子中,有随机的互不相等的10个数,每个数据有两份(也就是20个数,有两两相等的十对),随机分布在20个格子中.游戏开始,弹出二十个数的序列.每次点击格子会显示 ...

  2. 【poj1149】 pigs 网络流最大流问题

    描述 Description 尼克在一家养猪场工作,这家养猪场共有M间锁起来的猪舍,由于猪舍的钥匙都给了客户,所以尼克没有办法打开这些猪舍,客户们从早上开始一个接一个来购买生猪,他们到达后首先用手中的 ...

  3. 浅浅地谈一下随机算法【poj2454】【poj3318】

    随机算法我也只是稍微接触了一下,就是想写篇博客自己稍微总结一下 其实随机算法也算是一个玄学吧,运气不好还是会wa.但是我们知道,计算机可以在短时间内计算大量的数据,所以碰到正确答案的概率还是挺大的. ...

  4. 【NOIP模拟赛】【乱搞AC】【奇技淫巧】【乘法原理】回文串计数

    回文串计数 (calc.pas/calc.c/calc.cpp) [题目描述] 虽然是一名理科生,Mcx常常声称自己是一名真正的文科生.不知为何,他对于背诵总有一种莫名的热爱,这也促使他走向了以记忆量 ...

  5. 每天一个linxu命令6之jps  查看java进程的端口

    jps -- JavaVirtual Machine Process Status Tool 可以列出本机所有Java进程的pid jps [ options ] [ hostid ] 选项 -q 仅 ...

  6. 在C#中实现简单的对象池

    当我们频繁创建删除大量对象的时候,对象的创建删除所造成的开销就不容小觑了.为了提高性能,我们往往需要实现一个对象池作为Cache:使用对象时,它从池中提取.用完对象时,它放回池中.从而减少创建对象的开 ...

  7. 打包工具 使用帮助 inno setup

    http://wenku.baidu.com/link?url=0VRJ8n9am1KgVAAqwz-AU1htXamo7Vh0d4QIdGG6_LcTrZBdb7lRim8Jx6M8KaLJDQm1 ...

  8. USING CHARLES FROM AN IPHONE

    USING CHARLES FROM AN IPHONE 从系统偏好->高级来查看ip地址即可 To use Charles as your HTTP proxy on your iPhone ...

  9. golang之archive/tar包的使用

    原文地址:http://www.niu12.com/article/36 github地址:https://github.com/ZQCard/go_api_practice // tar包实现了文件 ...

  10. How is javascript asynchronous AND single threaded?

    原文: https://www.sohamkamani.com/blog/2016/03/14/wrapping-your-head-around-async-programming/ ------- ...