#ATarc164d. [ARC164D] 1D Coulomb
[ARC164D] 1D Coulomb
题目描述
对于一个长度为 ,由 个 + 和 个 - 组成的字符串 ,我们考虑如下问题,并将其答案记作 。
在数轴上 的位置上排列着 个小球,其中 个小球带有 的电荷,其余 个小球带有 的电荷。小球的电荷排列方式由 给出, 的第 个字符为
+时,表示 处放置一个带 电荷的小球,为-时,表示 处放置一个带 电荷的小球。每个小球会按照以下规则同时开始运动。数轴上数值较小的方向称为左,数值较大的方向称为右。
- 对于每个小球,在每一时刻, 按如下公式计算: (自身左侧所有小球的电荷总和)(自身右侧所有小球的电荷总和)(自身的电荷)
- 每个小球在每一时刻,如果 为正则以每秒 的速度向右移动, 为负则向左移动。
- 若同一时刻同一坐标上同时存在带 电荷和 电荷的小球,则两者相互抵消并消失。
此时,所有小球从开始运动到消失为止所移动距离(消失位置与初始位置的绝对值之差)的总和是多少?
给定一个长度为 ,由 +、-、? 组成的字符串 。将 中的 ? 替换为 + 或 -,使得最终得到的字符串 恰好有 个 + 和 个 -。对于所有可能的 ,求 ,并对 取模。
在给定的约束和运动规则下,可以保证所有小球在有限时间内全部消失,且只要小球未消失,其 的值不会为 ,不会出现三球及以上同时位于同一坐标的情况,且 一定为整数。
输入格式
输入通过标准输入给出。
输出格式
输出 对 取模的结果。
样例 1
输入
2
+??-
输出
6
样例 2
输入
17
??????????????????????????????????
输出
285212526
说明/提示
约束
- 为整数
- 的每个字符为
+、-或?,且+和-的数量均不超过
样例解释 1
从 可以得到的字符串 有 ++-- 和 +-+-。对于 ++--,开始运动时每个小球左右的电荷总和及 的值如下图所示。
因此, 的小球向右, 的小球向左运动。在这种情况下,每个小球之后都不会改变运动方向, 的小球将在 秒后于 相遇消失, 的小球将在 秒后于 相遇消失。在此期间, 的小球各自移动 , 的小球各自移动 ,因此 。同理可得 ,所以所求 的总和为 。
样例解释 2
请输出 的总和对 取模的结果。
由 ChatGPT 4.1 翻译