CF264D Colorful Stones

题目描述

有两串彩色石头序列。每颗石头的颜色可以是红色、绿色或蓝色。给定两个字符串 $s$ 和 $t$,$s$ 的第 $i$ 个字符(下标从 1 开始)表示第一个序列中第 $i$ 颗石头的颜色,$t$ 的第 $i$ 个字符表示第二个序列中第 $i$ 颗石头的颜色。如果字符是「R」、「G」或「B」,则表示该石头为红色、绿色或蓝色。 一开始,松鼠 Liss 站在第一个序列的第一颗石头上,猫 Vasya 站在第二个序列的第一颗石头上。你可以进行以下操作零次或多次。 每次操作有三种类型之一:「RED」、「GREEN」或「BLUE」。在一次操作 $c$ 之后,所有站在颜色为 $c$ 的石头上的动物会向前移动一颗石头。例如,如果你执行「RED」操作,站在红色石头上的动物将同时前进一格。你不能执行会导致动物移出序列范围的操作。也就是说,如果某些动物已经站在最后一颗石头上,不能再执行等于该石头颜色的操作。 一对位置(Liss 的位置,Vasya 的位置)称为一个状态。如果从初始状态 $(1,1)$ 经过零次或多次操作能够到达该状态,则称为可达状态。请计算共有多少个不同的可达状态。

输入格式

输入包含两行。第一行是字符串 $s$($1 \leq |s| \leq 10^6$)。第二行是字符串 $t$($1 \leq |t| \leq 10^6$)。每个字符串的字符均为「R」、「G」或「B」中的一个。

输出格式

请输出一个整数,表示不同可达状态的数量。 请不要在 C++ 中使用 %lld 进行 64 位整数输入输出,建议使用 cin/cout 流或 %I64d。

说明/提示

在第一个样例中,有五个可达状态:(1, 1)、(2, 2)、(2, 3)、(3, 2)、(3, 3)。例如,状态 (3, 3) 是可达的,因为可以依次执行「RED」、「GREEN」、「BLUE」操作从初始状态到达该状态。下图显示了这些指令的执行情况。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF264D/ff8e8d184349ca742f85291d5c556a28aebdf7a7.png) 由 ChatGPT 5 翻译