70分求救,三个测试点RE不知道怎么回事
  • 板块P1568 赛跑
  • 楼主MCRS_lizi
  • 当前回复5
  • 已保存回复5
  • 发布时间2021/10/24 19:20
  • 上次更新2023/11/4 02:22:52
查看原帖
70分求救,三个测试点RE不知道怎么回事
585805
MCRS_lizi楼主2021/10/24 19:20

作为一名刚学c++没多久的萌新,实在是不知道错哪了QAQ,P1568赛跑,本机上测试没出问题,不知道为什么会有三个RE,下面是我提交的代码

#include<bits/stdc++.h>
using namespace std;
int a1[10000],b1[10000],a2[10000],b2[10000],c[10000]; 
//分别是存第一个的速度时间,第二个速度时间和领先情况 
int main()
{
	int n,m,l1=0,l2=0,sum=0,ans=0;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>a1[i]>>b1[i];
	}
	for(int i=1;i<=m;i++)
	{
		cin>>a2[i]>>b2[i];
	}
	//输入 
	for(int i=1;i<=m;i++)
	{
		sum+=b2[i];
	}
	//计算总时间 
	for(int i=0;i<=sum;i++)
	{
		c[i]=0;
	}
	//不用管这个 
	for(int i=1;i<=sum;i++)
	{
		int k1=0,k2=0,sum1=0,sum2=0;
		for(int j=1;j<=n;j++)
		{
			sum1+=b1[j];
			if(sum1>=i)
			{
				k1=j;
				sum1=0;
				break;
			}
		}
		for(int j=1;j<=m;j++)
		{
			sum2+=b2[j];
			if(sum2>=i)
			{
				k2=j;
				sum2=0;
				break;
			}
		}
		//分别确定时间点对应的时间段 
		l1+=a1[k1];
		l2+=a2[k2];
		//赋上对应的速度并计算路程 
		if(l1>l2)
		{
			c[i]=1;
		}
		else if(l1<l2)
		{
			c[i]=0;
		}
		else
		{
			c[i]=c[i-1];
		}
		//确定领先位次 
	}
	for(int i=2;i<=sum;i++)
	{
		if(c[i]!=c[i-1])
		{
			ans++;
		}
	}
	//计算改变次数 
	cout<<ans;
	//输出 
	return 0;
}

希望有大佬过来指点一下,我只想知道我错哪了,谢谢QAQ

2021/10/24 19:20
加载中...