40 分,通过了讨论区的所有 hack
查看原帖
40 分,通过了讨论区的所有 hack
781046
tai_chi楼主2023/10/15 15:21

六个线段树,代码冗长,实在调不动了,只求问下策略是否有误

完整代码

下面是核心代码

while (q--)
	{
		// a 数组: apmx 是非负数最大 apmi 是非负数最小 aimx 是负数最大 aimi 是负数最小
		// b 数组: bmx 是最大 bmi 是最小
		int l1, r1, l2, r2;
		cin >> l1 >> r1 >> l2 >> r2;
		int res = -inf;
		int apmx = query1(1, l1, r1), apmi = query2(1, l1, r1), aimx = query3(1, l1, r1), aimi = query4(1, l1, r1);
		int bmx = query5(1, l2, r2), bmi = query6(1, l2, r2);
		if (inf > apmx && apmx >= 0)
			res = max(res, bmi * apmx);
		if (inf > apmi && apmi >= 0)
			res = max(res, bmi * apmi);
		if (-inf < aimx && aimx < 0)
			res = max(res, bmx * aimx);
		if (-inf < apmx && aimi < 0)
			res = max(res, bmx * aimi);
		cout << res << endl;
	}
2023/10/15 15:21
加载中...