#P1018. Problem 2. Milk Exchange

Problem 2. Milk Exchange

当前没有测试数据。

一、题目名称

牛奶交换(Milk Exchange)

二、题目描述

农夫约翰(Farmer John)的NN1N21051\leq N\leq2\cdot10^5)头奶牛围成一个圈,对于1,2,,N11,2,\cdots,N - 1中的每个ii,奶牛ii右边的奶牛是i+1i + 1,奶牛NN右边的奶牛是11。第ii头奶牛有一个容量为整数aia_i1ai1091\leq a_i\leq10^9)升的桶。所有桶最初都是满的。

每分钟,奶牛们根据一个仅由字符'L'和'R'组成的字符串s1s2sNs_1s_2\cdots s_N交换牛奶。如果第ii头奶牛至少有11升牛奶,当si=s_i ='L'时,她会将11升牛奶传递给她左边的奶牛;当si=s_i ='R'时,她会将11升牛奶传递给她右边的奶牛。所有交换同时发生(即,如果一头奶牛有一个满桶,但送出11升牛奶同时也收到11升牛奶,她的牛奶量保持不变)。如果一头奶牛的总牛奶量最终超过aia_i,那么多余的牛奶将流失。

农夫约翰想知道:在MM分钟(1M1091\leq M\leq10^9)后,所有奶牛剩余的牛奶总量是多少?

三、输入格式(从终端/标准输入读取)

  1. 第一行包含NNMM
  2. 第二行包含一个仅由字符'L'或'R'组成的字符串s1s2sNs_1s_2\cdots s_N,表示每头奶牛传递牛奶的方向。
  3. 第三行包含整数a1,a2,,aNa_1,a_2,\cdots,a_N,即每个桶的容量。

四、输出格式(打印输出到终端/标准输出)

输出一个整数,即MM分钟后所有奶牛的牛奶总量。

注意,此问题中涉及的大整数可能需要使用64位整数数据类型(例如,C/C++中的“long long”)。

五、样例输入及输出

样例输入1

3 1
RRL
1 1 1

样例输出1

2

解释:奶牛2233相互传递11升牛奶,所以它们的牛奶量保持不变。当奶牛11将牛奶传递给奶牛22时,奶牛22的桶溢出,一分钟后损失11升牛奶。

样例输入2

5 20
LLLLL
3 3 2 3 3

样例输出2

14

解释:每头奶牛都将11升牛奶传递给左边的奶牛并从右边的奶牛获得11升牛奶,所以无论经过多少时间,所有牛奶都得以保留。

样例输入3

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

样例输出3

38

解释:最初,总共有5151升牛奶。55分钟后,奶牛336677分别损失553355升牛奶。因此,总共剩余3838升牛奶。

六、评分规则

  1. 输入4 - 8:N,M1000N,M\leq1000
  2. 输入9 - 16:无其他额外约束。

题目来源:Chongtian Ma,Alex Liang。