Codeforces947D. Picking Strings
$n \leq 100000,m \leq 100000$,给长度$n$的字符串$s$和$m$的字符串$t$,只含ABC。定义串$a$可以经过任意次如下操作变成其他串。
现在$q \leq 100000$个询问每次给俩串各指定一个子串,问串$s$的子串能否变成串$t$的子串。
这个题叫细节题,送tourist下榜的。。极其恐怖。更恐怖的是他看起来是模拟题,而且pretest极弱,鬼都不知道自己错哪,先给场上AC的各位大佬献个膝盖。
好开始。首先有重要性质:$B->AC->AAB->AAAC->C$,$C->AB->AAC->AAAB->B$,所以$B=C$,且$AB->B$,因此把$C$看成$B$。而又$B->AC$,$A->BC$,得$B->AB$,$A->BB$,因此$B$前的$A$可以自由增减,且$A$可炸成$BB$。因此把目光投到后缀中的$A$。
首先如果目标串$B$比原始串少,由于$B$无法凭空消失,因此死。
如果$t$中有后缀$A$,$s$是无法凭空制造后缀$A$的,因此必须保留至少同样的数量,否则死。
如果有多出来的$A$,可以炸成$B$,也可三个三个消掉。那就看情况,如果目标串中的$B$和原始串一样,那就不得不三个三个消掉;如果目标串$B$比原始串多,那原始串要么得至少有个$B$,要么得炸一个$A$,您可能想说,不是肯定至少有个$A$或$B$吗不然串就空了那问个毛线,告诉您,这里的$A$是指抵消掉后缀后的!!
//#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
//#include<time.h>
//#include<complex>
#include<algorithm>
#include<stdlib.h>
using namespace std; int n,m,q;
#define maxn 200011
char s[maxn],t[maxn];
int ms[maxn],mt[maxn],sums[maxn],sumt[maxn];
int main()
{
scanf("%s%s",s+,t+);
n=strlen(s+); m=strlen(t+);
for (int i=;i<=n;i++) sums[i]=sums[i-]+(s[i]!='A'),ms[i]=s[i]=='A'?ms[i-]+:;
for (int i=;i<=m;i++) sumt[i]=sumt[i-]+(t[i]!='A'),mt[i]=t[i]=='A'?mt[i-]+:;
scanf("%d",&q);
while (q--)
{
int x1,y1,x2,y2; scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
int ss=sums[y1]-sums[x1-],tt=sumt[y2]-sumt[x2-];
if (((ss&)^(tt&)) || ss>tt) {putchar(''); continue;}
int aa=min(ms[y1],y1-x1+)-min(mt[y2],y2-x2+);
if (aa<) {putchar(''); continue;}
if (tt==ss)
{
if (aa%) putchar('');
else putchar('');
}
else
{
if (aa || ss) putchar('');
else putchar('');
}
}
return ;
}
Codeforces947D. Picking Strings的更多相关文章
- 【CodeForces】947 D. Picking Strings
[题目]D. Picking Strings [题意]给定只含'A','B','C'的字符串,支持以下变换:1.A - BC 2.B - AC 3.C - AB 4.AAA - empty ...
- Codeforces 923 D. Picking Strings
http://codeforces.com/contest/923/problem/D 题意: A-->BC , B-->AC , C-->AB , AAA-->empty 问 ...
- 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 由变化规则可得: ...
- 【codeforces】【比赛题解】#948 CF Round #470 (Div.2)
[A]Protect Sheep 题意: 一个\(R*C\)的牧场中有一些羊和一些狼,如果狼在羊旁边就会把羊吃掉. 可以在空地上放狗,狼不能通过有狗的地方,狼的行走是四联通的. 问是否能够保护所有的羊 ...
- VK Cup 2018 - Round 1+Codeforces Round #470
A. Primal Sport 题意:有两个人轮流玩游戏.给出数X(i-1),轮到的人需要找到一个小于X(i-1)的素数x,然后得到Xi,Xi是x的倍数中大于等于X(i-1)的最小的数.现在已知X2, ...
- Codeforces Round #470 Div. 2题解
A. Protect Sheep time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- Hacker Rank: Two Strings - thinking in C# 15+ ways
March 18, 2016 Problem statement: https://www.hackerrank.com/challenges/two-strings/submissions/code ...
- StackOverFlow排错翻译 - Python字符串替换: How do I replace everything between two strings without replacing the strings?
StackOverFlow排错翻译 - Python字符串替换: How do I replace everything between two strings without replacing t ...
- Multiply Strings
Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...
随机推荐
- P2712 摄像头
题目描述 食品店里有n个摄像头,这种摄像头很笨拙,只能拍摄到固定位置.现有一群胆大妄为的松鼠想要抢劫食品店,为了不让摄像头拍下他们犯罪的证据,他们抢劫前的第一件事就是砸毁这些摄像头. 为了便于砸毁摄像 ...
- ES-自然语言处理
前言 自然语言处理(Natural Language Processing)是计算科学领域与人工智能领域中的一个重要方向.它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法.自然语言处理 ...
- iOS 随笔小技巧 弱self 打印当前类行数列数,多人开发自动适配pch地址,获取设备uid的信息
$(SRCROOT)/PrefixHeader.pch自动适配pch地址 __weak __block typeof(self) weakself = self; __weak typeof(self ...
- Spring事务管理全面分析
Spring 事务属性分析什么是事物 事务管理对于企业应用而言至关重要.它保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性.就像银行的自助取款机,通常都能正常 ...
- C++静态全局变量和全局变量的区别
静态全局变量 非静态全局变量 存储方式 静态存储 静态存储 作用域 定义该变量的源文件内 所有源文件 解释: 共同点:全局变量(外部变量)的说明之前再冠以static 就构 成了静态的全局变量.全 ...
- 最短路 || Codeforces 938D Buy a Ticket
题意:从城市u到v(双向)要花w钱,每个城市看演唱会要花不同的门票钱,求每个城市的人要看一场演唱会花费最少多少(可以在这个城市看,也可以坐车到别的城市看,然后再坐车回来) 思路:本来以为是多源..实际 ...
- JS简单实现防抖和节流
一.什么是防抖和节流 Ps: 比如搜索框,用户在输入的时候使用change事件去调用搜索,如果用户每一次输入都去搜索的话,那得消耗多大的服务器资源,即使你的服务器资源很强大,也不带这么玩的. 1. 防 ...
- 「 HDOJ P3887 」 Counting Offspring
翻译 题目描述 给你一棵树,和它的树根 $P$,并且节点从 $1\rightarrow n$ 编号,现在定义 $f(i)$ 为 $i$ 的子树中,节点编号小于 $i$ 的节点的个数. 输入格式 有多组 ...
- [Usaco2009 Nov]lights
题目描述: 给出$n$,$m$,表示有$n$盏灯和$m$条奇怪的电线,按下电线一段的灯后另一端会有影响. 求最少按几次. 题解: 高消解异或方程组,得到一堆自由元后搜索自由元状态,然后不断更新答案. ...
- POJ-3278 抓住这头牛
广搜解决. 广搜搜出最短路,直接输出返回就行了. 每个点只搜一次,而且界限进行一次判断. else 语句里面不要用if else if,这样的话就直走一条路了. #include <ios ...