思路
题目要求是他们的移动时间不会超过1000000,其实我们可以枚举一下时间,每过一个时间单位,我们就让两头牛走一步,每走一步就判断一下是否相遇。
注意:每当两头奶牛分开后相遇,它们都会用友好的“哞哞”声互相问候
,只有分开之后在相遇才会打招呼,如果当前两头牛相遇之后,下一个时间单位如果再相遇就不会打招呼,只有当两头牛分开之后才会打招呼。
代码
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef pair<int, char> PII;
const int N = 50010;
int n, m;
int a, b;//两头牛的路程
PII d1[N], d2[N];
int x = 1, y = 1, ans = 0;
int main()
{
cin >> n >> m;
for(int i = 1; i <= n; i ++) cin >> d1[i].first >> d1[i].second;
for(int i = 1; i <= m; i ++) cin >> d2[i].first >> d2[i].second;
bool flag = true;//判断一开始 或者 相邻两个时间单位是否一直相遇
for(int i = 1;i <= 1000000;i ++ )
{
if(d1[x].first)
{
d1[x].first --;
if(d1[x].second == 'L') a --;
if(d1[x].second == 'R') a ++;
if(!d1[x].first && x < n)
x ++;
}
if(d2[y].first)
{
d2[y].first --;
if(d2[y].second == 'L') b --;
if(d2[y].second == 'R') b ++;
if(!d2[y].first && y < m)
y ++;
}
if(a == b && !flag)
{
ans ++;
//cout << i << endl;
flag = true;
}
if(a != b) flag = false;
}
cout << ans << endl;
return 0;
}