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 ...
随机推荐
- 转化一个数字数组为function数组(每个function都弹出相应的数字)
从汤姆大叔的博客里看到了6个基础题目:本篇是第2题 - 转化一个数字数组为function数组(每个function都弹出相应的数字) 此题关键点: 1.如何将一个匿名函数存入数组? 2.如何锁住需要 ...
- HDU 2795.Billboard-完全版线段树(区间求最值的位置、区间染色、贴海报)
HDU2795.Billboard 这个题的意思就是在一块h*w的板子上贴公告,公告的规格为1*wi ,张贴的时候尽量往上,同一高度尽量靠左,求第n个公告贴的位置所在的行数,如果没有合适的位置贴则输出 ...
- (5)C#运算符
运算符 参照javase (7)java基础知识-原码.反码.补码.运算符
- Codeforces Round #447 (Div. 2) A. QAQ【三重暴力枚举】
A. QAQ time limit per test 1 second memory limit per test 256 megabytes input standard input output ...
- Gym - 101194F(后缀数组)
Mr. Panda and Fantastic Beasts 题意 给出若干个字符串,找到一个最短的字典序最小的字符串且仅是第一个字符串的子串. 分析 对于这种多个字符串.重复的子串问题一般都要连接字 ...
- 多层代理获取用户真实IP
1. 几个概念remote_addr:如果中间没有代理,这个就是客户端的真实IP,如果有代理,这就是上层代理的IP.X-Forwarded-For:一个HTTP扩展头,格式为 X-Forwarded- ...
- ELK之收集日志到mysql数据库
写入数据库的目的是持久化保存重要数据,比如状态码.客户端浏览器版本等,用于后期按月做数据统计等. 环境准备 linux-elk1:10.0.0.22,Kibana ES Logstash Nginx ...
- Reverse Words in a String II -- LeetCode
Given an input string, reverse the string word by word. A word is defined as a sequence of non-space ...
- iOS KVC/KVO 线程(GCP)
最近比较忙,把学习知识点的帖子的地址记一下,有时间再好好整理. KVC/KVO1 KVC/KVO2 线程(GCP)
- RTM CU CTP
.RTM: Released To Manufacturing,也就是新产品的正式发布版本,比如SQL 2008 RTM.其后的补丁都是基于这个之上的. .CU: Cumulative Update, ...