HDU – 6282

http://acm.hdu.edu.cn/showproblem.php?pid=6282

by Hzu_Tested

题意:给出两个字符串S和T,只由a,b,c三种字符组成(不为空串,长度不一定相同,不一定包含所有字符)。对字符串S可以进行几种操作:在任意位置添加/删除字符串aa,bb,abab。问字符串S是否能通过以上几种操作变成T,输出Yes/No。

思路:字符串变化的问题,先找出所有可行的操作:添加/删除aa,bb,abab,即只能添加/删除偶数个a/b,无法添加/删除c,那么如果S和T的字符c的个数不等则一定是No。

再看到第一个样例ab->ba,则ba->ab也可行(添加和删除互为逆操作),发现隐藏操作ab<-->ba。

那么ab的位置关系就无所谓了,因为可以随意交换ab的位置(没有c的情况下),则只剩ab的个数关系需要比较,又因为可以任意添加/删除偶数个a/b,则ab的个数关系只需要比较奇偶性即可。

那么,对于没有字符c的串str1和str2,只要str1中a的个数的奇偶和str2中a的个数的奇偶相同,且str1中b的个数的奇偶和str2中b的奇偶相同,则str1和str2就能相互转换。

对于有字符c的情况,只需以每个c作为分割,比较每一个子串即可。

所有对应子串都能相互转换,则S和T能相互装换。

(比较暴力的写法,不是很好看...)

 #include <cstdio>
#include <cstring>
using namespace std; const int maxn = +;
char str[maxn];
int strc[maxn];
int cnt1;
char goal[maxn];
int goalc[maxn];
int cnt2; int main() {
while(scanf("%s",str)!=EOF) {
scanf("%s",goal);
int len = strlen(str);
cnt1 = ;
strc[cnt1++] = -;
for(int i=;i<len;++i) {
if(str[i]=='c') {
strc[cnt1++] = i;
}
}
int len2 = strlen(goal);
cnt2 = ;
goalc[cnt2++] = -;
for(int i=;i<len2;++i) {
if(goal[i]=='c') {
goalc[cnt2++] = i;
}
}
bool ok = false;
if(cnt1==cnt2) {
ok = true;
int a1,b1,a2,b2;
for(int i=;i<cnt1;++i) {
a1 = , b1 = , a2 = , b2 = ;
for(int j=strc[i-]+;j<strc[i];++j) {
if(str[j]=='a'){
++a1;
} else if(str[j]=='b') {
++b1;
}
}
for(int j=goalc[i-]+;j<goalc[i];++j) {
if(goal[j]=='a') {
++a2;
} else if(goal[j]=='b') {
++b2;
}
}
if(a1%!=a2% || b1%!=b2%) {
ok = false;
break;
}
}
if(ok) {
a1 = , b1 = , a2 = , b2 = ;
for(int i=strc[cnt1-]+;i<len;++i) {
if(str[i]=='a') {
++a1;
} else if(str[i]=='b') {
++b1;
}
}
for(int i=goalc[cnt2-]+;i<len2;++i) {
if(goal[i]=='a') {
++a2;
} else if(goal[i]=='b') {
++b2;
}
}
if(a1%!=a2% || b1%!=b2%) {
ok = false;
}
}
}
printf("%s\n",ok?"Yes":"No");
}
return ;
}

Accept Code

要注意,如果有cnt个c,那么需要比较的子串一共有cnt+1,不要少比较了。

hdu - 6282,2018CCPC湖南全国邀请赛G题,字符串,规律的更多相关文章

  1. hdu - 6277,2018CCPC湖南全国邀请赛B题,找规律,贪心找最优.

    题意: 给出N个小时,分配这些小时去写若干份论文,若用1小时写一份论文,该论文会被引用A次,新写一篇论文的话,全面的论文会被新论文引用一次. 找最大的H,H是指存在H遍论文,而且这些论文各被引用大于H ...

  2. hdu - 6281,2018CCPC湖南全国邀请赛F题,快排

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6281 题意: 根据已给出的式子,进行排序,然后输出排完序后原先的下表. 题解:用结构体保存,在用结构体 ...

  3. hdu - 6276,2018CCPC湖南全国邀请赛A题,水题,二分

    题意: 求H的最大值,  H是指存在H篇论文,这H篇被引用的次数都大于等于H次. 思路:题意得,  最多只有N遍论文,所以H的最大值为N, 常识得知H的最小值为0. 所以H的答案在[0,N]之间,二分 ...

  4. HDU 4597 Play Game 2013 ACM-ICPC吉林通化全国邀请赛H题

    九野的博客,转载请注明出处:  http://blog.csdn.net/acmmmm/article/details/10833941 题意:给定T个测试数据,下面有2副牌,每副n张,每张都有一个分 ...

  5. CCPC2018-湖南全国邀请赛 G String Transformation

    G.String Transformation 题目描述 Bobo has a string S = s1 s2...sn consists of letter a , b and c . He ca ...

  6. 2014湘潭全国邀请赛I题 Intervals /POJ 3680 / 在限制次数下取有权区间使权最大/小问题(费用流)

    先说POJ3680:给n个有权(权<10w)开区间(n<200),(区间最多数到10w)保证数轴上所有数最多被覆盖k次的情况下要求总权最大,输出最大权. 思路:       限制的处理:s ...

  7. Infinite Fraction Path HDU 6223 2017沈阳区域赛G题题解

    题意:给你一个字符串s,找到满足条件(s[i]的下一个字符是s[(i*i+1)%n])的最大字典序的长度为n的串. 思路:类似后缀数组,每次倍增来对以i开头的字符串排序,复杂度O(nlogn).代码很 ...

  8. 2017湘潭大学邀请赛G题(贪心+优先队列)

    参考博客:http://www.cnblogs.com/chendl111/p/6891770.html 题目链接:https://www.icpc.camp/contests/4mYguiUR8k0 ...

  9. hdu 5443 (2015长春网赛G题 求区间最值)

    求区间最值,数据范围也很小,因为只会线段树,所以套了线段树模板=.= Sample Input3110011 151 2 3 4 551 21 32 43 43 531 999999 141 11 2 ...

随机推荐

  1. DPDK安装依赖项合集 环境合集

    前言 在dpdk编译过程中,由于一些依赖项的限制,dpdk在纯净的系统上安装需要花一些功夫.本文总结了编译dpdk所需的依赖项,并归纳了安装合集,在安装过程上可以省下大量的搜索时间. 使用系统 ubu ...

  2. Bridge(桥接)模式

    1. 概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度 ...

  3. Java中的IO流(六)

    上一篇<Java中的IO流(五)>把流中的打印流PrintStream,PrintWriter,序列流SequenceInputStream以及结合之前所记录的知识点完成了文件的切割与文件 ...

  4. Linux-- 查看文件 more与其它

    more 翻页查看 用法:more 文件名 nl 显示行号打印(不常用) 1.不打印空白行行号:nl -b t 文件名 类似 cat -b 文件名 2.打印所有行行号:nl -b a 文件名 类似 c ...

  5. 这次的PION的总结

    这次的PION的总结 果然不出所料,才\(129\)分. 同级的巨佬们\(170,180,\color {red}{280}\)\(\small{wc这什么神仙啊QAQ}\),都比我强 那我还有什么可 ...

  6. L2-006 树的遍历 (后序中序求层序)

    题目: 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤30),是二叉树中结点的个数.第二行给出其后序遍历序 ...

  7. VCC、VDD、VSS以及VBAT的区别

    在STM32 的学习中,发现有几种看起来相关的名称,分别是VCC.VDD.VSS.VBAT,在经过搜索查找之后,总结如下: 1.VCC的C是Circuit的意思,是指整个供电回路的电压, 也有人说VC ...

  8. aiohttp的模板

    import aiohttp import asyncio import async_timeout from urllib.parse import urljoin,urldefrag root_u ...

  9. 《PHP基础全面总结》系列分享专栏

    <PHP基础全面总结>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/201777.html 文章 PHP基础之运算符的使用方法 P ...

  10. 安装xml2js出现npm ERR! code E404 npm ERR! 404 Not Found: event-stream@3.3.6

    原因是npm源指向的问题 执行: npm config set registry https://registry.npmjs.org/