@[腐草一刹](/space/show?uid=193280) 你的程序没有考虑如果他们一直并驾齐驱的情况,一遇到这种情况你的程序会输出-1,在输出时特判一下就好了
```
#include<iostream>
using namespace std;
#define MAX 1000010
int m,n,a[1000001],b[1000001];
int v,t,k;
int flag=-1,ans=-1;//flag表示当前状态,1:KC领先。0:SH领先。ans表示状态改变次数。
int main(){
ios::sync_with_stdio(false);
cin>>m>>n;
for(int i=1;i<=m;i++){ //输入并记录KC每单位时间已跑的路程
cin>>v>>t;
for(int j=1;j<=t;j++)
a[k+j]=a[k+j-1]+v;
k+=t;
}
k=0;
for(int i=1;i<=n;i++){ //SH同样
cin>>v>>t;
for(int j=1;j<=t;j++)
b[k+j]=b[k+j-1]+v;
k+=t;
}
for(int i=1;i<=k;i++){ //遍历每一单位时间状态是否发生改变
if(a[i]>b[i]){
if(flag!=1){
ans++;
flag=1;
}
}
if(a[i]<b[i]){
if(flag!=0){
ans++;
flag=0;
}
}
}
if(ans==-1)//加上这个就过了
cout<<0<<endl;
else
cout<<ans<<endl; //输出
return 0;
}
```
by CSP_chestnut @ 2019-08-21 14:36:41
@[Sq_chestnut](/space/show?uid=236361) 恍然大悟!谢谢大佬!
by 腐草一刹 @ 2019-08-21 17:29:49
啊
by bookcase @ 2020-07-16 15:38:57