#P10215. [CTS2024] 字符串游戏

[CTS2024] 字符串游戏

题目描述

小 P 和小 B 喜欢玩游戏,他们找到了 skip。skip 告诉了他们这样一个游戏:

  • 有一个包含小写字母的字符串 SS,游戏开始时其为 skip 给定的一个字符串 S0S_0。游戏对小 P 和小 B 计算分数,初始他们的分数都为 00
  • 小 P 和小 B 轮流在这个串上操作,小 P 先手。每次操作方可以进行以下操作:
    • 选择 SS 的一个非空前缀(可以是 SS 本身),获得等同于这个前缀在 SS 中的出现次数的分数,并将这个前缀从 SS 中删掉。
  • 如果进行了某次操作后 SS 变为空,游戏就结束了。

为了让你更好的理解游戏规则,考虑如下例子:

  • 初始时,S0=ababaS_0 = ababa
  • 小 P 选择 ababaababa 的前缀 aa,获得 3 分,SS 变为 babababa
  • 小 B 选择 babababa 的前缀 baba,获得 2 分,SS 变为 baba
  • 小 P 选择 baba,获得 1 分,字符串变为空,游戏结束。最终小 P 获得 4 分,小 B 获得 2 分。

小 P 希望最大化小 P 的得分减去小 B 的得分,而小 B 希望最小化这个值。他们想知道在双方都绝顶聪明的情况下,最终小 P 的得分减去小 B 的得分会是多少。

输入格式

标准输入读入数据。

输入仅一行一个小写字母构成的字符串 S0S_0

输出格式

输出到标准输出。

一个整数,表示双方绝顶聪明的前提下,游戏结束时小 P 的得分减去小 B 的得分的值。

ababa

2

提示

样例 1 解释

小 P 和小 B 的最优策略为题目描述中给出的策略。

子任务

nn 为字符串 SS 的长度。对于所有测试数据,1n1061\le n\le 10^6,且字符串 SS 为小写字母构成的字符串。

子任务编号 nn \le 特殊性质 分值
1 5×1035\times 10^3 10
2 10610^6 SS 的每个字符在 {a,b}\{a,b\} 中独立均匀随机
3 SS 的每个字符均为 aa 5
4 2×1052 \times 10^5 SS 的每个字符均为 aabb 25
5 5×1055 \times 10^5
6 10610^6