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 ...
随机推荐
- aps.net session全面介绍(生命周期,超时时间)
Asp.Net中的Session与Cookie最大的区别在于:Cookie信息全部存放于客户端,Session则只是将一个ID存放在客户端做为与服务端验证的标记,而真正的数据都是放在服务端的内存之中的 ...
- 新东方雅思词汇---7.3、dioxide
新东方雅思词汇---7.3.dioxide 一.总结 一句话总结: di(双)+oxide 英 [daɪ'ɒksaɪd] 美 [daɪ'ɑksaɪd] n. 二氧化物 词组短语 carbon di ...
- spring3: 依赖和依赖注入-xml配置-DI的配置
3.1.1 依赖和依赖注入 传统应用程序设计中所说的依赖一般指“类之间的关系”,那先让我们复习一下类之间的关系: 泛化:表示类与类之间的继承关系.接口与接口之间的继承关系: 实现:表示类对接口的实现 ...
- Nessus离线安装及升级插件 转
修改Nessus Web端口 ./nessuscli fix --set xmlrpc_listen_port=8866 最近做客户的内网主机漏洞扫描,申请了一台内网主机做扫描服务器,安装Nessus ...
- Xcode删除无用的Symbols信息
open ~/Library/Developer/Xcode/iOS\ DeviceSupport 进入后对不需要的版本手动Delete.
- 百度之星2017初赛A-1006-度度熊的01世界
度度熊的01世界 Accepts: 967 Submissions: 3064 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3 ...
- openvswitch的原理和常用命令
一.Openvswitch工作原理 openvSwitch是一个高质量的.多层虚拟交换机,使用开源Apache2.0许可协议,由 Nicira Networks开发,主要实现代码为可移植的C代码.它的 ...
- element-ui 的el-button组件中添加自定义颜色和图标的实现方法
这篇文章主要介绍了element-ui 的el-button组件中添加自定义颜色和图标的实现方法,目前的解决方案是:添加一个自定义全局指令,同时在element-ui源码中,加入对应的组件.需要的朋友 ...
- C# WinForm开发系列之c# 通过.net自带的chart控件绘制饼图,柱形图和折线图的基础使用和扩展
一.需要实现的目标是: 1.将数据绑定到pie的后台数据中,自动生成饼图. 2.生成的饼图有详细文字的说明. 1.设置chart1的属性Legends中默认的Legend1的Enable为false: ...
- PHP获取访问页面HTTP状态码的实现代码
方法一 $header_info=get_headers('//www.jb51.net/'); echo $header_info[0]; //耗时 0.67~0.78 方法二 $ch = curl ...