题号:NC53305
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld
题目描述
假设有一个字符串

仅含有+和-两种字符(你就当做这是Pascal里的字符数组qwq)。如果P的子串

)
同时满足:
- 子串里只有一种字符c;
- L=1,或子串左边的第一个字符P[L-1]与c不同;
- R=N,或子串右边的第一个字符P[R+1]与c不同;
那么

即为P的一个「
片段」。
给你q组询问,每次询问包含两个字符串

,这两个字符串都只含有+和-两种字符。
试问:能否将

通过若干次「
变换」修改为

。
在每一次变换中,你可以在字符串中找两个「
相邻」且「
长度不同」的片段,将二者中
较短的片段里面所有的字符改为另一种字符(+改成-,-改成+)。改完后,如果满足条件,这个片段会和两边融合,成为新的一大块片段。
输入描述:
第一行,一个整数q。
在接下来的q行中,每行有两个仅包含+-的字符串
,用空格分隔。
输出描述:
如果能将
通过若干次「变换」修改为
输出Yes,否则输出No
示例1
输入
复制
3
++- +++
++-- ++++
++-+--+- ++++++++
示例2
输入
复制
3
++-+-- ++----
++-+-- +++---
-++- -++-
备注:
CC-BY-SA,感谢LOJ分享,译文来自 https://loj.ac/problem/2770