为什么加这句话KDT会MLE#11
查看原帖
为什么加这句话KDT会MLE#11
469375
Imtking楼主2023/9/29 11:03
inline int build(int l, int r)
{
	if (l > r) return 0;
	// if (l == r)
	// {
	// 	pushup(a[l]);
	// 	return a[l];
	// }
	int mid = (l + r) >> 1;
	double a1 = 0, b1 = 0, a2 = 0, b2 = 0;
	for (int i = l; i <= r; ++i) a1 += t[a[i]].x, b1 += t[a[i]].y;
	a1 /= (r - l + 1); b1 /= (r - l + 1);
	for (int i = l; i <= r; ++i)
	{
		a2 += (a1 - t[a[i]].x) * (a1 - t[a[i]].x);
		b2 += (b1 - t[a[i]].y) * (b1 - t[a[i]].y);
	}
	if (a2 > b2) nth_element(a + l, a + mid, a + r + 1, cmpx), t[a[mid]].op = 1;
	else nth_element(a + l, a + mid, a + r + 1, cmpy), t[a[mid]].op = 2;
	t[a[mid]].ls = build(l, mid - 1); t[a[mid]].rs = build(mid + 1, r);
	pushup(a[mid]); return a[mid];
}
2023/9/29 11:03
加载中...