存储器
题号:NC53305
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

题目译自 ROI 2017 Day 2 T1. Накопитель
假设有一个字符串仅含有+和-两种字符(你就当做这是Pascal里的字符数组qwq)。如果P的子串同时满足:
  • 子串里只有一种字符c;
  • L=1,或子串左边的第一个字符P[L-1]与c不同;
  • R=N,或子串右边的第一个字符P[R+1]与c不同;
那么即为P的一个「片段」。
给你q组询问,每次询问包含两个字符串s_i,t_i,这两个字符串都只含有+和-两种字符。
试问:能否将s_i通过若干次「变换」修改为t_i
在每一次变换中,你可以在字符串中找两个「相邻」且「长度不同」的片段,将二者中较短的片段里面所有的字符改为另一种字符(+改成-,-改成+)。改完后,如果满足条件,这个片段会和两边融合,成为新的一大块片段。

输入描述:

第一行,一个整数q。
在接下来的q行中,每行有两个仅包含+-的字符串s_i,t_i,用空格分隔。

输出描述:

如果能将s_i通过若干次「变换」修改为t_i输出Yes,否则输出No
示例1

输入

复制
3
++- +++
++-- ++++
++-+--+- ++++++++

输出

复制
Yes
No
Yes
示例2

输入

复制
3
++-+-- ++----
++-+-- +++---
-++- -++-

输出

复制
Yes
No
Yes

备注:


CC-BY-SA,感谢LOJ分享,译文来自  https://loj.ac/problem/2770