http://codeforces.com/contest/923/problem/D

题意:

A-->BC , B-->AC , C-->AB , AAA-->empty

问指定串S是否能变成目标串T

发现1:B与C等价

B-->AC-->AAB-->AAAC-->C

C-->AB-->AAC-->AAAB-->B

发现2:B前面的A可以消去

AB-->AAC-->AAAB-->A

新的变换:

A-->BB , B-->AB , AB-->A , AAA-->empty

所以:

结论1:B之前可以增删任意个A

结论2:在A的位置可以变成任意偶数个B

结合结论1和结论2,现在只剩下末尾的A待解决

末尾的A是无法增加的,所以只能考虑把S串末尾多余的A删去

综上所述,本题解法:

1、若S和T的 b的数量的奇偶性不同,则无解

因为B的改动只能是偶数个

2、若T中b的数量<S中b的数量,则无解

因为b只能加不能减

3、若T末尾A的数量>S末尾A的数量,则无解

因为末尾的A只能减不能加

删去末尾相同数量的A

考虑末尾的A

4、若 决定 变化最后1个A-->BB,在满足排除上面三种无解的前提下,若S中末尾A的数量>T中末尾B的数量 且 S中B的数量<T中B的数量,则有解

5、若决定删去3个A,若S串末尾A的数量是3的倍数 且 不存在 删去末尾相同数量的A后 S串是空串 T串不是空串

#include<cstdio>
#include<cstring>
#include<algorithm> using namespace std; const int maxn=; int sa[maxn],sb[maxn],ta[maxn],tb[maxn]; int n,m;
char s[maxn],t[maxn]; int main()
{
scanf("%s%s",s+,t+);
n=strlen(s+);m=strlen(t+);
for(int i=;i<=n;i++)
{
if(s[i]=='A')sa[i]=sa[i-]+;
sb[i]=sb[i-]+(s[i]=='B'||s[i]=='C');
}
for(int i=;i<=m;i++)
{
if(t[i]=='A')ta[i]=ta[i-]+;
tb[i]=tb[i-]+(t[i]=='B'||t[i]=='C');
}
int Q;
scanf("%d",&Q);
int l,r,Sa,Sb,Ta,Tb,lenS,lenT;
while(Q--)
{
scanf("%d%d",&l,&r);
Sa=min(r-l+,sa[r]);
Sb=sb[r]-sb[l-];
lenS=r-l+;
scanf("%d%d",&l,&r);
Ta=min(r-l+,ta[r]);
Tb=tb[r]-tb[l-];
lenT=r-l+;
if(Tb<Sb||((Tb&)!=(Sb&))||Ta>Sa) printf("");
else if((Ta<Sa&&Tb>Sb)||(( Ta!=lenS || Ta==lenT) && (Sa-Ta)%==)) printf("");
else printf("");
}
return ;
}

Codeforces 923 D. Picking Strings的更多相关文章

  1. 【CodeForces】947 D. Picking Strings

    [题目]D. Picking Strings [题意]给定只含'A','B','C'的字符串,支持以下变换:1.A - BC   2.B - AC   3.C - AB   4.AAA - empty ...

  2. Codeforces 385B Bear and Strings

    题目链接:Codeforces 385B Bear and Strings 记录下每一个bear的起始位置和终止位置,然后扫一遍记录下来的结构体数组,过程中用一个变量记录上一个扫过的位置,用来去重. ...

  3. Codeforces 482C Game with Strings(dp+概率)

    题目链接:Codeforces 482C Game with Strings 题目大意:给定N个字符串,如今从中选定一个字符串为答案串,你不知道答案串是哪个.可是能够通过询问来确定, 每次询问一个位置 ...

  4. Codeforces Round #470 (rated, Div. 1, based on VK Cup 2018 Round 1) 923D 947D 948E D. Picking Strings

    题: OvO http://codeforces.com/contest/947/problem/D 923D 947D 948E 解: 记要改变的串为 P1 ,记目标串为 P2  由变化规则可得: ...

  5. Codeforces 923 C. Perfect Security

    http://codeforces.com/contest/923/problem/C Trie树 #include<cstdio> #include<iostream> us ...

  6. Codeforces 923 B. Producing Snow

    http://codeforces.com/contest/923/problem/B 题意: 有n天,每天产生一堆体积为Vi的雪,每天所有雪堆体积减少Ti 当某一堆剩余体积vi<=Ti时,体积 ...

  7. Codeforces 923 A. Primal Sport

    http://codeforces.com/contest/923/problem/A 题意: 初始有一个x0,可以选择任意一个<x0的质数p,之后得到x1为≥x0最小的p的倍数 然后再通过x1 ...

  8. 【24.34%】【codeforces 560D】Equivalent Strings

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  9. CodeForces 682D Alyona and Strings (四维DP)

    Alyona and Strings 题目链接: http://acm.hust.edu.cn/vjudge/contest/121333#problem/D Description After re ...

随机推荐

  1. pandas 初识(一)

    基本内容 Series: Series 是有一组数据(numpy的数据类型 numpy.ndarray)以及一组数据标签(即索引)组成,可以看成一个一个定长的有序字典(索引值到数据值的一个映射) ob ...

  2. kubeadm安装kubernetes 1.13.1集群完整部署记录

    k8s是什么 Kubernetes简称为k8s,它是 Google 开源的容器集群管理系统.在 Docker 技术的基础上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整功能,提 ...

  3. B1041. 考试座位号(15)

    这题比较简单,没有调试,一次通过,虽然简单,不过也有借鉴意义. #include<bits/stdc++.h> using namespace std; const int N=1005; ...

  4. PHPMyWind5.4存储XSS(CVE-2017-12984)

    0x0 环境 操作机:xp   192.168.110.128 目标:win2003    192.168.110.133 目标cms:PHPMyWind5.4 0x11 漏洞介绍 允许恶意访问者在客 ...

  5. VC++代码上传到VSS上 注意事项

    1.删除Debug文件,删除Release 文件2.删掉ncb,opt,clw,aps文件注.opt 工程关于开发环境的参数文件.ncb 无编译浏览文件(no compile browser).当自动 ...

  6. Java实验报告(实验三)

    课程:Java程序设计          班级: 1351 姓名:王玮怡                学号:20135116 成绩:             指导教师:娄嘉鹏       实验日期: ...

  7. linux读书笔记(5章)

    linux读书笔记(5章) 标签(空格分隔): 20135328陈都 第五章 系统调用 5.1 与内核通信 系统调用 让应用程序受限的访问硬件设备 提供创建新进程并与已有进程通信的机制 提供申请操作系 ...

  8. linux第一次实验报告

    http://wwwcnblogs.com/20135228guoyao/4964477.html

  9. ES6实用新特性

    兼容性 http://kangax.github.io/compat-table/es5/ http://kangax.github.io/compat-table/es6/ ES6(ES2015)兼 ...

  10. hibernate 创建工厂类

    package cn.hibernate; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; / ...