我的 query():
int query(int u, int l, int r)
{
if (l <= arr[u].l && arr[u].r <= r)
return arr[u].w;
else
{
int mid = (arr[u].l + arr[u].r) / 2, res = 0;
if (l <= mid)
res = Max(res, query(2 * u, l, r));
if (r > mid)
res = Max(res, query(2 * u + 1, l, r));
return res;
}
}
标程的 query()
int query(int p, int x, int y)
{
if (arr[p].l == x && arr[p].r == y)
return arr[p].w;
else
{
int mid = (arr[p].l + arr[p].r) / 2;
if (mid < x)
return query(2 * p + 1, x, y);
else if (mid >= y)
return query(2 * p, x, y);
else
return Max(query(2 * p, x, mid), query(2 * p + 1, mid + 1, y));
}
}
结果是我获得 WA 0 分好成绩,请问这两个有什么区别?