8pts求解答query
查看原帖
8pts求解答query
290464
星斗其文楼主2023/3/30 02:22

为什么query函数写成这样只有8pts,自己测了感觉没啥问题

int query(int x, int l, int r, int len) {
    if (l == r) return l;
    pushdown(x, l, r);
    int mid = (l + r) >> 1;
    if (tr[tr[x].l].sum >= len)
        return query(tr[x].l, l, mid, len);
    else if (tr[tr[x].l].rval && tr[tr[x].l].rval + tr[tr[x].r].lval >= len)
        return query(tr[x].l, l, mid, tr[tr[x].l].rval);
    else 
        return query(tr[x].r, mid + 1, r, len);
}

改成这样就ac了

int query(int x, int l, int r, int len) {
    if (l == r) return l;
    pushdown(x, l, r);
    int mid = (l + r) >> 1;
    if (tr[tr[x].l].sum >= len)
        return query(tr[x].l, l, mid, len);
    else if (tr[tr[x].l].rval + tr[tr[x].r].lval >= len)
        return mid - tr[tr[x].l].rval + 1;
    else 
        return query(tr[x].r, mid + 1, r, len);
}

下面的代码我懂,主要是不知道上面的哪里错了,求大佬指导qaq

2023/3/30 02:22
加载中...