求助 关于龙虎斗
  • 板块学术版
  • 楼主是青白呀白鸽子
  • 当前回复2
  • 已保存回复2
  • 发布时间2020/10/30 16:43
  • 上次更新2023/11/5 09:31:02
查看原帖
求助 关于龙虎斗
359270
是青白呀白鸽子楼主2020/10/30 16:43

龙虎斗最后五个测试点是错的 求解析

#include<bits/stdc++.h>
using namespace std;
long long n,m,p1,p2,s1,s2,num[100005],minx;
long long d=0,t=0;
int main()
{
	scanf("%lld",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%lld",&num[i]);
	}
	scanf("%lld%lld%lld%lld",&m,&p1,&s1,&s2);
	for(int i=1;i<m;i++)
	{
		d+=(m-i)*num[i];
	}
	for(int i=m+1;i<=n;i++)
	{
		t+=(i-m)*num[i];
	}
	if(p1<m)d+=(m-p1)*s1;
	else if(p1>m)t+=(p1-m)*s1;
	int cha;
	int t1,d1;
	t1=t;
	d1=d;
	for(int i=1;i<=n;i++)
	{
		if(i>m)t+=(i-m)*s2;
		else d+=(m-i)*s2;
		if(d>t)cha=d-t;
		else cha=t-d;
		if(i==1)
		{
			minx=cha;
			p2=1;
		}
		if(cha<minx)
		{
			minx=cha;
			p2=i;
		}
		t=t1;
		d=d1;
	}
	printf("%lld",p2);
	return 0;
}
2020/10/30 16:43
加载中...