牛奶交换
`
include [HTML_REMOVED]
include [HTML_REMOVED]
include [HTML_REMOVED]
include [HTML_REMOVED]
using namespace std;
const int N=4000010;
long long n,m;
char str[N];//存储向左(L)还是向右(R)
int w[N];//存储每头奶牛的牛奶量
int main()
{
cin >> n >> m;
long long res = 0;
for(int i = 0;i[HTML_REMOVED]> str[i];
str[i+n] = str[i];
}
for(int i = 0;i[HTML_REMOVED]> w[i];
res+=w[i];
w[i+n] = w[i];
}
int k = 0;
while (k<n && str[k]==str[k+1]){
k;
}
if(k<n){
for(int i =k+1;i<=n;i){
int j = i;
long long sum = 0 ;
while(j<=k+n&&str[j]==str[i]){
sum+=w[j];
j++;
}
if(str[i]==’R’)sum-=w[j-1];//连续的R
else sum-=w[i];//连续的L
res-=min(sum,m);
i = j-1;
}
}
cout<<res<<endl;
return 0;
}`