树剖板子,玄学TLE,码风良好,悬关

P2590 [ZJOI2008] 树的统计

@[LiuQJun_271119](/user/856179) 死因:不用 `std::max` 导致的。
by Super_Cube @ 2024-01-28 15:16:21


@[LiuQJun_271119](/user/856179) 你把你的 `define max(a,b)` 换成 `std::max` 就过了。
by Super_Cube @ 2024-01-28 15:16:58


@[LiuQJun_271119](/user/856179) 嫌麻烦可以直接把第二行换成 `using std::max;`。
by Super_Cube @ 2024-01-28 15:29:33


@[Super_Cube](/user/481893) orz %%% max这么写为什么会慢QAQ
by LiuQJun_271119 @ 2024-01-28 15:52:04


@[LiuQJun_271119](/user/856179) 具体原因是你用了 `define` 的写法。 这样写的原理是什么?把代码里所有带 `max` 的地方展开。 我打个比方,`res = max(res, querymx(x << 1, s, mid, l, r));`,因为你写的是 `define`,所以编译器会给你展开成这样:`res = ((res) > (querymx(x << 1, s, mid, l, r)) ? (res) : (querymx(x << 1, s, mid, l, r)));`。 发现问题了吗?你 `querymx` 算了两遍。
by Super_Cube @ 2024-01-28 15:59:45


@[Super_Cube](/user/481893) 我懂了,tql%%%
by LiuQJun_271119 @ 2024-01-28 16:01:13


|