问题1365--PlumYu的移动机器人

1365: PlumYu的移动机器人

[命题人 : ]
时间限制 : 1.000 sec  内存限制 : 128 MB

提交

题目描述

老学长 PlumYu 开了一家机器人公司,有天他突发奇想,利用公司里的一些机器人做了一个有趣的实验。
他将一些机器人分布在一条无限长的数轴上,它们初始坐标用一个下标 0 开始的整数数组 nums 表示。老学长 PlumYu 给这些机器人下达命令,让他们以每秒钟一单位的速度开始移动。
这时候老学长将这些机器人的一个集合控制器交给了你,在其中可以输入一个字符串 s, 每个字符按顺序分别表示每个机器人移动的方向。'L'  表示机器人往左或者数轴的负方向移动,'R'  表示机器人往右或者数轴的正方向移动。
当两个机器人相撞时,它们开始沿着原本相反的方向移动。
你需要完成老学长派给你的任务,算出指令重复 d 秒后,所有机器人之间两两距离之和。由于答案可能很大,请你将答案对 1e9 + 7 取余后返回。
注意:
对于坐标在 ij 的两个机器人,(i,j) 和  (j,i) 视为相同的坐标对。也就是说,机器人视为无差别的。
当机器人相撞时,它们立即改变它们的前进方向,这个过程不消耗任何时间。
当两个机器人在同一时刻占据相同的位置时,就会相撞。
例如,如果一个机器人位于位置 0 并往右移动,另一个机器人位于位置 2 并往左移动,下一秒,它们都将占据位置 1,并改变方向。再下一秒钟后,第一个机器人位于位置 0 并往左移动,而另一个机器人位于位置 2 并往右移动。
例如,如果一个机器人位于位置 0 并往右移动,另一个机器人位于位置 1 并往左移动,下一秒,第一个机器人位于位置 0 并往左行驶,而另一个机器人位于位置 1 并往右移动。

输入

第一行为一个数字 n,代表有几个机器人。
第一行为一个数组,代表每个机器人的初始位置。
第二行为一个字符串,代表每个机器人初始运动方向。
第四行为一个数字 d,代表命令重复执行几秒。

输出

一个数字 L 代表所有机器人之间两两距离之和。

样例输入 Copy

3
-2 0 2
RLL
3

样例输出 Copy

8

提示

2 <= n <= 1e5
2 <= nums <= 1e9
-2 * 1e9 <= nums[i] <= 2 * 1e9
0 <= d <= 1e9
nums[i] 互不相同

来源/分类