存两个数组,存储两头牛每个时间节点在数轴上向右移动了多少。
然后动态模拟即可,注意在相遇的时候要判定方向不同。
#include <bits/stdc++.h>
using namespace std;
int x, y, a[1000010], b[1000010], ta, tb, ans = 0;
int main() {
cin >> x >> y;
for (int i = 1; i <= x; i++) {
int p; char opt; cin >> p >> opt;
if (opt == 'L') while (p--) a[++ta] = -1;
if (opt == 'R') while (p--) a[++ta] = 1;
}
for (int i = 1; i <= y; i++) {
int p; char opt; cin >> p >> opt;
if (opt == 'L') while (p--) b[++tb] = -1;
if (opt == 'R') while (p--) b[++tb] = 1;
}
ta = max(ta, tb); x = y = 0;
for (int i = 1; i <= ta; i++) {
x += a[i], y += b[i];
if (x == y && a[i] != b[i]) ans++;
} printf("%d", ans);
return 0;
}