CCPC2018-湖南全国邀请赛 G String Transformation
G.String Transformation
题目描述
Formally, A = u ? w ? v (“ ? ” denotes string concatenation) can be transformed into A 0 = u ? v and vice versa where u , v are (possibly empty) strings and w ∈ { aa , bb , abab } .
Given the target string T = t1 t2 . . . tm , determine if Bobo can transform the string S into T .
输入
The first line of each test case contains a string s1 s2 ...sn . The second line contains a string t1 t2 . . . tm .
输出
• 1 ≤ n, m ≤ 104
• s1 , s2 ,..., sn , t1 , t2 , . . . , tm ∈ { a , b , c }
• The sum of n and m does not exceed 250,000.
样例输入
ab
ba
ac
ca
a
ab
样例输出
Yes
No
No
提示
For the first sample, Bobo can transform as ab => aababb => babb => ba .
题意:给定字符串S和T(均只由a,b,c三个字母组成),可对S进行插入或删除操作(插入或删除的子串只能是"aa","bb"或"abab"),问能否通过操作将S变为T

#include <iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<deque>
#define ll long long
using namespace std;
char a[];
char b[];
deque<int>q1,q2;
int main()
{
while(cin>>a>>b)
{
while(!q1.empty ()) q1.pop_back();
while(!q2.empty ()) q2.pop_back();
int la=strlen(a);
int lb=strlen(b);
int c1=;
int c2=;
for(int i=;i<la;i++)
{
if(a[i]=='c')
{
q1.push_back();
c1++;
}
else if(a[i]=='a')
{
if(q1.empty ())
{
q1.push_back();
continue;
}
if(q1.back()==)
{
q1.pop_back();
}
else if(q1.back()==)
{
if(i<la-&&a[i+]=='b')
{
q1.pop_back();
i++;
if(q1.empty ()||q1.back ()!=)
{
q1.push_back ();
}
else if(q1.back ()==)
{
q1.pop_back();
} }
else q1.push_back ();
}
else q1.push_back (); }
else if(a[i]=='b')
{
if(q1.empty ())
{
q1.push_back();
continue;
}
if(q1.back()==)
{
q1.pop_back();
}
else if(q1.back()==)
{
if(i<la-&&a[i+]=='a')
{
q1.pop_back();
i++;
if(q1.empty ()||q1.back ()!=)
{
q1.push_back ();
}
else if(q1.back ()==)
{
q1.pop_back();
} }
else q1.push_back();
}
else q1.push_back();
}
}
for(int i=;i<lb;i++)
{
if(b[i]=='c')
{
q2.push_back();
c2++;
}
else if(b[i]=='a')
{
if(q2.empty ())
{
q2.push_back();
continue;
}
if(q2.back()==)
{
q2.pop_back();
}
else if(q2.back()==)
{
if(i<lb-&&b[i+]=='b')
{
q2.pop_back();
i++;
if(q2.empty ()||q2.back ()!=)
{
q2.push_back ();
}
else if(q2.back ()==)
{
q2.pop_back();
} }
else q2.push_back ();
}
else q2.push_back (); }
else if(b[i]=='b')
{
if(q2.empty ())
{
q2.push_back();
continue;
}
if(q2.back()==)
{
q2.pop_back();
}
else if(q2.back()==)
{
if(i<lb-&&b[i+]=='a')
{
q2.pop_back();
i++;
if(q2.empty ()||q2.back ()!=)
{
q2.push_back ();
}
else if(q2.back ()==)
{
q2.pop_back();
}
}
else q2.push_back(); }
else q2.push_back();
}
}
bool f=;
if(c1!=c2||q1.size()!=q2.size()) f=;
else
{
while(!q1.empty ())
{
if(q1.front() ==&&q2.front() ==)
{
q1.pop_front ();
q2.pop_front ();
if(q1.empty ())
{
f=;
break;
}
else if(q1.front() ==&&q2.front() ==)
{
q1.pop_front ();
q2.pop_front ();
}
else
{
f=;
break;
}
}
else if(q1.front() ==&&q2.front() ==)
{
q1.pop_front ();
q2.pop_front ();
if(q1.empty ())
{
f=;
break;
}
else if(q1.front() ==&&q2.front() ==)
{
q1.pop_front ();
q2.pop_front ();
}
else
{
f=;
break;
}
}
else if(q1.front()==q2.front ())
{
q1.pop_front();
q2.pop_front();
}
else
{
f=;
break;
}
}
}
if(f) printf("Yes\n");
else printf("No\n");
}
return ;
}
CCPC2018-湖南全国邀请赛 G String Transformation的更多相关文章
- hdu - 6282,2018CCPC湖南全国邀请赛G题,字符串,规律
HDU – 6282 http://acm.hdu.edu.cn/showproblem.php?pid=6282 by Hzu_Tested 题意:给出两个字符串S和T,只由a,b,c三种字符组成( ...
- hdu - 6281,2018CCPC湖南全国邀请赛F题,快排
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6281 题意: 根据已给出的式子,进行排序,然后输出排完序后原先的下表. 题解:用结构体保存,在用结构体 ...
- hdu - 6277,2018CCPC湖南全国邀请赛B题,找规律,贪心找最优.
题意: 给出N个小时,分配这些小时去写若干份论文,若用1小时写一份论文,该论文会被引用A次,新写一篇论文的话,全面的论文会被新论文引用一次. 找最大的H,H是指存在H遍论文,而且这些论文各被引用大于H ...
- hdu - 6276,2018CCPC湖南全国邀请赛A题,水题,二分
题意: 求H的最大值, H是指存在H篇论文,这H篇被引用的次数都大于等于H次. 思路:题意得, 最多只有N遍论文,所以H的最大值为N, 常识得知H的最小值为0. 所以H的答案在[0,N]之间,二分 ...
- 2019 CCPC 湖南全国邀请赛
A. Chessboard 做法1 单纯形. 做法2 最大费用可行流问题,行列模型. 对每行建一个点,每列建一个点.物品 \(i\) 在 \((r,c)\),那么 \(r\) 向 \(c\) 连流量为 ...
- CCPC2018-湖南全国邀请赛 Solution
A - Easy $h$-index 后缀扫一下 #include <bits/stdc++.h> using namespace std; #define ll long long #d ...
- CCPC2018-湖南全国邀请赛
传送门 A - Easy \(h\)-index 签到. Code /* * Author: heyuhhh * Created Time: 2019/10/29 11:58:23 */ #inclu ...
- 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛
比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...
- hihocoder 1084 扩展KMP && 2014 北京邀请赛 Justice String
hihocoder 1084 : http://hihocoder.com/problemset/problem/1084 北京邀请赛 Just String http://www.bnuoj.co ...
随机推荐
- Springboot- Spring缓存抽象学习笔记
Spring缓存作用准备: 1.准备数据(准备一个有数据的库和表/导入数据库文件,准备好表和表里面的数据) 2.创建javaBean封装数据 3.整合MyBatis操作数据库( 这里用MyBatis) ...
- phpexcel: 数据导出
// 设置列名最多40个 $cols = array( "A", "B", "C", "D", "E" ...
- No mojo definitions
pom.xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</gro ...
- 关键C函数备录
一.搜索指定路径下的文件 (1) intptr_t _findfirst(const char *, struct _finddata_t *);//可以使用通配符*或? (2) int _findn ...
- 【LeetCode】Find Minimum in Rotated Sorted Array 找到旋转后有序数组中的最小值
本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/4032570.html 原题: Suppose a sorted array is ...
- 【sparkSQL】DataFrame的常用操作
scala> import org.apache.spark.sql.SparkSession import org.apache.spark.sql.SparkSession scala> ...
- docker-es
镜像地址https://hub.docker.com/_/elasticsearch/ docker pull elasticsearch 这个版本是dockerhub最新,官方最新版:https:/ ...
- Maven项目中java类报错-Cannot resolve symbol
电脑蓝屏了,强制重启之后再打开IDEA里面的项目,所有Java类文件都在报Cannot resolve symbo错误,可以确定所有依赖的包都有引用且jar包没有冲突. 经查询找到这个解决方法: 在I ...
- Rope的简单介绍
repo的一些用法和理解 repo简单来讲就是一种调用git的一个脚本文件,用来管软件项目的软件仓库配置文件,描述了软件之间的一些依赖关系. 在Google的android项目下: repo只是goo ...
- 多态、Object类和 JDK常用封装类型
多态 定义:某一类事物的多种存在形态. 多态的体现:父类的引用指向了自己的子类对象.父类的引用也可以接收自己的子类对象. 多态的前提:必须是类与类之间有关系,要么继承,要么实现.通常还有一个前提,存在 ...