#ATarc177f. [ARC177F] Two Airlines

[ARC177F] Two Airlines

题目描述

在 AtCoder 国,有一排共 L+1L+1 个岛屿,从西至东依次编号为 00LL。这些岛通过航空线路连接,每条连接线双向可通。对于每个 1iL1 \leq i \leq L,岛屿 i1i-1 和岛屿 ii 由一条线路连接。每一条航空路线都由 A 公司或 J 公司运营,具体来说,连接岛屿 i1i-1 和岛屿 ii 的线路属于 SiS_i 公司。

这个国家有 NN 位居民,他们被编号为 11NN。每位居民目前分别位于岛屿 XiX_i 上。

每位居民都持有一张某个公司的优惠券。具体来说,居民 ii 拿着的是 CiC_i 公司的优惠券。他们可以免费搭乘优惠券对应公司的航班任意次,而搭乘其他公司航班时,每次需要支付 11 枚硬币。

我们的目标是把位于岛屿 00 的宝藏运送到首都岛屿 LL。为了实现这一目标,请计算最少需要支付多少枚硬币。

请注意,宝藏可以在居民之间转交,但优惠券不允许转让。

输入格式

输入通过以下格式标准输入:

LL NN

S1S2SLS_1 S_2 \cdots S_L

X1X_1 C1C_1

X2X_2 C2C_2

\vdots

XNX_N CNC_N

注意第 22 行是一个长度为 LL 的字符串。

输出格式

输出为一个整数表示所需的最少硬币数量。

样例 1

输入

4 3
AAJJ
3 A
1 J
1 J

输出

2

样例 2

输入

8 3
JJAAJJAJ
2 A
6 A
8 J

输出

6

样例 3

输入

8 6
JJAAJJAJ
2 A
6 A
8 J
8 J
8 J
8 J

输出

4

说明/提示

条件限制

  • 1L6×1041 \leq L \leq 6 \times 10^4
  • 1N6×1041 \leq N \leq 6 \times 10^4
  • Si (1iL)S_i\ (1 \leq i \leq L)AJ
  • 0XiL (1iN)0 \leq X_i \leq L\ (1 \leq i \leq N)
  • Ci (1iN)C_i\ (1 \leq i \leq N)AJ
  • L,N,XiL, N, X_i 是整数

示例解释

下面的操作可使宝藏被运送到岛屿 44,总共只需花费 22 枚硬币:

  1. 居民 11 从岛 33 移到岛 22。因为不是优惠券适用的公司航班,所以花费 11 枚硬币。
  2. 居民 11 从岛 22 到岛 11,在这个过程中无需支付,因为这是他拥有优惠券的公司路线。
  3. 居民 11 从岛 11 到岛 00,免费,因为使用的是优惠券航班。
  4. 居民 11 拿起宝藏。
  5. 居民 11 带着宝藏,从岛 00 移动到岛 11,依旧免费。
  6. 居民 11 把宝藏交给居民 22
  7. 居民 22 带着宝藏,从岛 11 到岛 22,这条航线不适用他的优惠券,花费 11 枚硬币。
  8. 居民 22 继续从岛 22 到岛 33,免费,因为使用了他公司的航班。
  9. 最后,居民 22 从岛 33 到岛 44,依旧免费。

本翻译由 AI 自动生成