警示后人(如果你只得24分)
查看原帖
警示后人(如果你只得24分)
649451
wuyuhann123456789楼主2024/8/28 14:33

类似如下代码会炸:

long long ans=0;
for(int j=1;j<=n;j++)
{
	if(dis[j]==1000000000)
		ans+=1000000000*j;
	else
		ans+=(dis[j]+d[j]-d[i])*j;
}

因为 10910^9 和 jj 均属 int 范围,语句 ans+=1000000000*j; 返回给 ans 的类型也是 int 类型,应将代码改为:

long long ans=0;
for(int j=1;j<=n;j++)
{
	if(dis[j]==inf)
		ans+=1ll*inf*j;
	else
		ans+=(dis[j]+d[j]-d[i])*j;
}
2024/8/28 14:33
加载中...