[CSP-S模拟测试]:reverse(模拟)
题目传送门(内部题56)
输入格式
第一行包含一个整数:$T$,表示数据组数。
接下来$T$行,每行包含两个字符串:$a\ b$。
输出格式
对于每组数据,如果存在$c$,输出最长的情况下字典序最大的$c$,否则输出$-1$。
样例
样例输入:
3
AB BA
ABA BAB
AB ABAA
样例输出:
-1
AB
AB
数据范围与提示
样例解释:
对于第一组数据,不存在这样的$c$。
对于第二组数据,$AB$以通过第一种操作到$ABA$,$AB$可以通过第二种操作到$BAB$。
对于第三组数据,$AB$不需要操作即可得到$AB$,$AB$进行两次第二种操作即可得到$ABAA$,并且$AB$是长度最长的字典序最小的满足条件的$c$。
数据范围:
$\bullet$对于$10\%$的数据,$1\leqslant |a|<|b|\leqslant 6$;
$\bullet$对于$30\%$的数据,$1\leqslant |a|<|b|\leqslant 12$;
$\bullet$对于$100\%$的数据,$1\leqslant |a|<|b|\leqslant 2,000,1\leqslant T\leqslant 20$,保证$a,b$都是由$A,B$字符组成。
题解
这道题的难点就在于怎么让其字典序问题。
其实,我们根本不用考虑字典序的问题,这可以从两点看出。
$\alpha.$题目和样例解释中都说的是字典序最小,然而输出格式中却写的是字典序最大,教练又没有改题,所以这道题不用考虑字典序问题。
$\beta.$模拟一下过程,一个字符串只能由一种方式转移过来,所以我们也可以找回去,而对于一个长度我们也只能找回去一个串,所以不用考虑字典序问题。
解决了这个问题,就是一道大模拟了,其实可以用$hash$做到线性时间复杂度,但是显然出题人写标程也想偷个懒。
时间复杂度:$\Theta(n^2)$。
期望得分:$100$分。
实际得分:$100$分。
代码时刻
#include<bits/stdc++.h>
using namespace std;
char ch1[2001],ch2[2001];
int a[2001],b[2001];
bool judge(){for(int i=1;i<=a[0];i++)if(a[i]!=b[i])return 0;return 1;}
int main()
{
int T;scanf("%d",&T);
while(T--)
{
scanf("%s%s",ch1+1,ch2+1);
a[0]=strlen(ch1+1);
b[0]=strlen(ch2+1);
for(int i=1;i<=a[0];i++)a[i]=ch1[i]-'A';
for(int i=1;i<=b[0];i++)b[i]=ch2[i]-'A';
if(a[0]>b[0])swap(a,b);
while(b[0]>a[0])
{
if(b[b[0]])
{
b[0]--;
reverse(b+1,b+b[0]+1);
}
else b[0]--;
}
while(1)
{
if(judge())
{
for(int i=1;i<=b[0];i++)
if(b[i])printf("B");
else printf("A");
puts("");
break;
}
if(a[a[0]])
{
a[0]--;
reverse(a+1,a+a[0]+1);
}
else a[0]--;
if(b[b[0]])
{
b[0]--;
reverse(b+1,b+b[0]+1);
}
else b[0]--;
if(!a[0]&&!b[0]){puts("-1");break;}
}
}
return 0;
}
rp++
[CSP-S模拟测试]:reverse(模拟)的更多相关文章
- [CSP-S模拟测试]:Reverse(模拟+暴力+剪枝)
题目描述 小$G$有一个长度为$n$的$01$串$T$,其中只有$T_S=1$,其余位置都是$0$.现在小$G$可以进行若干次以下操作: $\bullet$选择一个长度为K的连续子串($K$是给定的常 ...
- [CSP-S模拟测试]:reverse(数位DP)
题目描述 我们定义: $\overline{d_k...d_2d_1}=\sum \limits_{i=1}^kd_i\times {10}^{i-1}=n(d_i\in [0,9]\ and\ d_ ...
- 模拟测试—moq:简单一两句
在Xunit的基础上,说话模拟测试. 假如我们有这样一个控制器里面有这样一个方法,如图 我们在对Bar测试得时候,如果测试未通过,错误有可能来至于Bar,也有可能错误来至于serverde Foo方法 ...
- Android单元测试与模拟测试详解
测试与基本规范 为什么需要测试? 为了稳定性,能够明确的了解是否正确的完成开发. 更加易于维护,能够在修改代码后保证功能不被破坏. 集成一些工具,规范开发规范,使得代码更加稳定( 如通过 phabri ...
- [开源]微信在线信息模拟测试工具(基于Senparc.Weixin.MP开发)
目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具 ...
- 安装nginx python uwsgi环境 以及模拟测试
uwsgi帮助文档: http://uwsgi-docs-cn.readthedocs.io/zh_CN/latest/WSGIquickstart.html http://uwsgi-docs.re ...
- 利用Python中的mock库对Python代码进行模拟测试
这篇文章主要介绍了利用Python中的mock库对Python代码进行模拟测试,mock库自从Python3.3依赖成为了Python的内置库,本文也等于介绍了该库的用法,需要的朋友可以参考下 ...
- 转 C#实现PID控制的模拟测试和曲线绘图
C#实现PID控制的模拟测试和曲线绘图 本文分两部分,一部分是讲PID算法的实现,另一部分是讲如何用动态的曲线绘制出PID运算的结果. 首先,PID算法的理论模型请参考自动控制理论,最早出现的是模 ...
- Mockito:一个强大的用于Java开发的模拟测试框架
https://blog.csdn.net/zhoudaxia/article/details/33056093 介绍 本文将介绍模拟测试框架Mockito的一些基础概念, 介绍该框架的优点,讲解应用 ...
随机推荐
- SqlServer 事物
Ø 事务 在数据库中有时候需要把多个步骤的指令当作一个整体来运行,这个整体要么全部成功,要么全部失败,这就需要用到事务. 1. 事务的特点 事务有若干条T-SQL指令组成,并且所有的指令昨晚一个整体提 ...
- python实现获取文件夹中的最新文件
实现代码如下: #查找某目录中的最新文件import osclass FindNewFile: def find_NewFile(self,path): #获取文件夹中的所有文件 lists = os ...
- 【ABAP系列】SAP ABAP模块-取整操作中CEIL和FLOOR用法
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP模块-取整操作中 ...
- php有几种开发语言
php有几种开发语言? php的启发语言有五种,分别是C.Perl.Java.C++.Python. PHP(全称:PHP:Hypertext Preprocessor,即“PHP:超文本预处理器”) ...
- 阿里云ECS服务器centos6.x安装docker问题盘点
1.首先在centos6.x和centos7.x中yum安装docker的区分. centos6.x: yum install docker-io centos7.x: yum install doc ...
- 重温位运算、原码、反码、补码、以及>>和<<<区别
一个例子说明原码,反码,补码: 下面进行5和-5的原码,反码,补码表示: 5的原码:0000 0101 5的反码:0000 0101 5的补码:0000 0101 -5的原码:1000 0101 -5 ...
- [fw]Real Mode addressing
Real Mode 在 real mode 中,memory 的使用被限制在 1 MByte(220 bytes) 內,可用的 address 範圍為 0x00000 ~ 0xFFFFF. 由 mem ...
- python学习三十三天函数匿名函数lambda用法
python函数匿名函数lambda用法,是在多行语句转换一行语句,有点像三元运算符,只可以表示一些简单运算的,lambda做一些复杂的运算不太可能.分别对比普通函数和匿名函数的区别 1,普通的函数用 ...
- Springboot-技术专区-war包部署在Tomcat上并修改默认端口
springboot项目内置Tomcat,直接打成jar包在dos下运行即可,但有时我们需要用war包以非内嵌Tomcat的方式来部署,以下是本人的实际经验 1.首先需要修改pom.xml文件 < ...
- 广播模式下的生产者与消费者fanout模式
生产者 #coding=utf-8 import pika import sys connection = pika.BlockingConnection(pika.ConnectionParamet ...