警示后人(如果你WA 25pts)
查看原帖
警示后人(如果你WA 25pts)
398152
MinimumSpanningTree最小生成树楼主2024/10/3 22:08
lll heigh(int x,lll y,lll z)
{
	ll imax=floor((1.0-b[x])/c[x]);
	if(c[x]>=0) return b[x]*(z-y+1)+c[x]*(z-y+1)*(y+z)/2;
	if(imax<y) return z-y+1;
	if(imax>r) return b[x]*(z-y+1)+c[x]*(y+z)*(z-y+1)/2;
	return b[x]*(imax-y+1)+c[x]*(y+imax)*(imax-y+1)/2+z-imax;
}

这个函数(也就是第一篇题解的calc函数),不难发现第 44c[x]*(z-y+1)*(y+z) 三个 10910^9 相乘会爆掉,所以要用 __int128

2024/10/3 22:08
加载中...