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 ...
随机推荐
- (8)oracle 表的增删改
表的命名 表需要字母开头 只能用如下字符 A-Z,a-z,0-9,$,#. 不能使用oracle保留字 长度不能超过30 创建一张表 create table 表名(字段名 数据类型,字段名 数据类型 ...
- 51nod 1101 换零钱 【完全背包变形/无限件可取】
1101 换零钱 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 N元钱换为零钱,有多少不同的换法?币值包括1 2 5分,1 2 5角,1 2 5 ...
- maven的知识图谱
maven 1.maven的好处 java项目管理工具 依赖管理 对jar包统一管理 项目名称 公司/组织 版本信息 本地仓库 由于索引的存在,找jar包很快 项目构建 依赖管理 传统项目 很大 包含 ...
- #424 Div2 E
#424 Div2 E 题意 给出一个 n 个数的数列,从前往后取数,如果第一个数是当前数列的最小值,则取出,否则将它放到数列尾端,问使数列为空需要多少步操作. 分析 用数据结构去模拟. 线段树维护区 ...
- 洛谷——P1679 神奇的四次方数
P1679 神奇的四次方数 题目描述 在你的帮助下,v神终于帮同学找到了最合适的大学,接下来就要通知同学了.在班级里负责联络网的是dm同学,于是v神便找到了dm同学,可dm同学正在忙于研究一道有趣的数 ...
- POJ 2763 Housewife Wind(树链剖分)(线段树单点修改)
Housewife Wind Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 10378 Accepted: 2886 D ...
- c++ —— .bat 对拍
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #i ...
- 【bzoj1085】【 [SCOI2005]骑士精神】启发式剪枝+迭代加深搜索
(上不了p站我要死了,侵权度娘背锅) 如果这就是启发式搜索的话,那启发式搜索也不是什么高级玩意嘛..(啪啪打脸) Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且 ...
- Android简单的利用SoundPool进行播放铃声的实例代码
MainActivity.java package com.example.pengdonglin.soundpool_demo; import android.annotation.Suppress ...
- onWebView检查网页中文
问题:要检查网页中的一段文本: 开始我是这样写的: private final static String SPECIFIED_TEXT = "这个是一段中文"; onWebVie ...