CF962E Byteland, Berland and Disputed Cities

题目描述

比特兰(Byteland)和伯兰(Berland)的城市位于坐标轴 $Ox$ 上。此外,这条轴上还存在一些争议城市,两国都认为这些城市属于自己。因此,$Ox$ 轴上的城市分为三种类型: - 比特兰的城市, - 伯兰的城市, - 争议城市。 最近,新一代计算机网络项目 BNET 正式启动。现在两国的任务是连接这些城市,使得各自国家的网络连通。 两国达成协议,通过铺设 BNET 电缆连接城市对,需满足以下条件: - 如果仅考虑比特兰的城市和争议城市,那么在这些城市中,任意两个城市之间都可以通过一条或多条电缆相互到达; - 如果仅考虑伯兰的城市和争议城市,那么在这些城市中,任意两个城市之间都可以通过一条或多条电缆相互到达。 因此,需要选择一个城市对集合来铺设电缆,使得上述两个条件同时满足。电缆支持双向数据传输,每条电缆连接两个不同的城市。 铺设一条连接两个城市的电缆的成本等于它们之间的距离。请找到满足条件的最小总成本。 每个城市是 $Ox$ 轴上的一个点。技术上允许连接城市 $a$ 和 $b$ 时,即使位于它们之间的城市 $c$($a < c < b$)未被该电缆直接连接($a$、$b$ 和 $c$ 同时表示城市的坐标)。

输入格式

第一行包含一个整数 $n$($2 \le n \le 2 \cdot 10^{5}$)——城市数量。 接下来的 $n$ 行,每行包含一个整数 $x_i$ 和一个字母 $c_i$($-10^{9} \le x_i \le 10^{9}$)——城市的坐标及其类型。如果城市属于比特兰,$c_i$ 为 `B`;如果属于伯兰,$c_i$ 为 `R`;如果是争议城市,$c_i$ 为 `P`。 所有城市的坐标互不相同。输入保证城市按坐标升序排列。

输出格式

输出一个整数,表示满足条件的最小总电缆长度。具体来说: - 如果删除所有伯兰城市($c_i = \text{'R'}$),剩余城市(比特兰和争议城市)之间需能通过电缆相互到达; - 如果删除所有比特兰城市($c_i = \text{'B'}$),剩余城市(伯兰和争议城市)之间需能通过电缆相互到达。

说明/提示

样例 $1$ 说明: 应连接第一座城市与第二座(长度 $5$)、第二座与第三座(长度 $3$)、第三座与第四座(长度 $4$),总成本为 $5 + 3 + 4 = 12$。 样例 $2$ 说明: 没有争议城市,因此需要连接所有相邻的比特兰城市和所有相邻的伯兰城市。 - 伯兰城市坐标为 $10, 21, 32$,需铺设两条电缆(长度 $11$ 和 $11$); - 比特兰城市坐标为 $ 14 $ 和 $ 16 $,需铺设一条电缆(长度 $2$)。 总成本为 $11 + 11 + 2 = 24$。