90分..还是90分..我到底哪里错了啊...

P1568 赛跑

@[腐草一刹](/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


|