/ Vijos / 题库 /

牛奶交换

牛奶交换

时间限制:1秒  内存限制:256M


【题目描述】

  Farmer John 的 N(1≤N≤2⋅10^5)头奶牛排成一圈,使得对于 \(1,2,…,N−1\) 中的每个 \(i\),奶牛 \(i\) 右边的奶牛是奶牛 i+1,而奶牛 \(N\) 右边的奶牛是奶牛 1。第 \(i\) 头奶牛有一个容量为整数 \(a_i(1≤a_i≤10^9)\)升的桶。所有桶初始时都是满的。

  每一分钟,奶牛都会根据一个字符串 \(s_1s_2…s_N\) 传递牛奶,该字符串仅由字符 L 和 R 组成。当第 \(i\) 头奶牛至少有 1 升牛奶时,如果 \(s_i=\)L,她会将 1 升牛奶传递给她左边的奶牛,如果 \(s_i\)=R 则传递给右边的奶牛。所有交换同时发生(即,如果一头奶牛的桶是满的,送出一升牛奶,但也收到一升,则她的牛奶量保持不变)。如果此时一头奶牛的牛奶量超过 \(a_i\),则多余的牛奶会损失。

  FJ 想要知道:经过 \(M\) 分钟\((1≤M≤10^9)\)后,所有奶牛总共还余下多少牛奶?

【输入格式】

  输入的第一行包含 \(N\) 和 \(M\)。
  第二行包含一个字符串 \(s_1s_2…s_N\),仅由字符 L 或 R 组成,表示每头奶牛传递牛奶的方向。
  第三行包含整数 \(a_1 ,a_2 ,…,a_N\),为每个桶的容量。

【输出格式】

  输出一个整数,为 \(M\) 分钟后所有奶牛总共余下的牛奶量。注意这个问题涉及到的整数可能需要使用 64 位整数型(例如,C/C++ 中的 long long)。

【输入输出样例1】

 Input

3 1
RRL
1 1 1

 Output

2

【样例1解释】

  奶牛 2 和 3 互相传递一升牛奶,因此她们的牛奶得以保留。当奶牛 1 将牛奶传递给奶牛 2 时,奶牛 2 的桶会溢出,从而一分钟后损失了一升牛奶。

【输入输出样例2】

 Input

5 20
LLLLL
3 3 2 3 3

 Output

14

【样例2解释】

  每头奶牛都将一升牛奶传递给左边的奶牛,并从右边的奶牛那里获得一升牛奶,因此无论经过多长时间所有牛奶都会被保留下来。

【输入输出样例3】

 Input

9 5
RRRLRRLLR
5 8 4 9 3 4 9 5 4

 Output

38

【样例3解释】

  初始时,共有 51 升牛奶。5 分钟后,奶牛 3,6 和7 将分别损失 5,3 和 5 升牛奶。因此,总共还剩下 38 升牛奶。

【测试点性质】

  测试点 \(4−8:N,M≤1000\)。
  测试点 \(9−16:\)没有额外限制。

【来源】

  Mr.he

信息

ID
2924
难度
(无)
分类
(无)
标签
递交数
0
已通过
0
通过率
?
被复制
1
上传者