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 ...
随机推荐
- ThinkPad.E440_FN键反了
1.一直不知道,为何我的 FN键反了(Fn+F1 才是F1的功能),想改过来.查到是 BIOS中改,但是 BIOS里面没有 那些个修改的选项,于是 还原了BIOS的设置,于是出问题了... 2.问题1 ...
- 抓jsoup_02_数据
1.测试网页:http://ajax.mianbao99.com/vod-showlist-id-8-order-time-c-3719-p-1.html ZC: 直接查看的话,使用这个链接:http ...
- C-RAN
无线接入网(RAN)是移动运营商赖以生存的重要资产.传统的无线接入网具有以下特点: 1. 每一个基站连接若干个固定数量的扇区天线,并覆盖小片区域,每个基站只能处理本小区收发信号: 2. 系统的容量是干 ...
- python学习笔记(接口自动化框架 V2.0)
这个是根据上次框架版本进行的优化 用python获取excel文件中测试用例数据 通过requets测试接口.并使用正则表达式验证响应信息内容 生成xml文件测试报告 版本更新内容: 1. 整理了Cr ...
- IOS-界面传值
第二个视图控制器如何获取第一个视图控制器的部分信息 例如 :第二个界面中的lable显示第一个界面textField中的文本 这就需要用到属性传值.block传值 那么第一个视图控制器如何获的第二个视 ...
- CoreData之增删改查
1. 导入库文件CoreData.framework2. 在iOS的Core Data 中建Data Model文件 此时有三种选择 2.1. 选Data Model(如默认名Model.xcdata ...
- C#实现文件与二进制互转并存入数据库
这篇文章主要介绍了C#实现文件与二进制互转并存入数据库,本文直接给出代码实例,代码中包含详细注释,需要的朋友可以参考下 //这个方法是浏览文件对象 private void button1_C ...
- c# unicode 编码 中文转换 已测试(转)
中文传参时因为编码不同经常凌乱风中,故传前编成unicode码来过度是一个不错的解决方法 /// <summary> /// 中文转unicode /// </summ ...
- Windows 使用技巧
怎样添加“发送到”的快捷方式,cmd里面shell:sendto打开文件夹,把快捷方式放进去就可以了. vs中c#快速实现接口所有函数快捷键: 鼠标放在实现的接口上面+shift+alt+F10.
- openlayers自定义图层控制的实现
好久没写博文了,今天出来冒个泡. 最近一直在考虑一件事情,那就是openlayers中自定义wms的图层控制.用过openlayers的人都知道,在openlayers中有自带的图层控制的控件,调用方 ...