如果你w开了ll也wa3
查看原帖
如果你w开了ll也wa3
413779
Ke_scholar楼主2024/7/11 12:12

如果你的区间取模是这样写的

void modifyMod(i64 u, i64 l, i64 r, i64 p) {
    if (l <= tr[u].l && tr[u].r <= r && tr[u].ma < p) return;
    if (tr[u].l == tr[u].r) {
        tr[u].ma = tr[u].sum %= p;
        return ;
    }
    i64 mid = (tr[u].l + tr[u].r) >> 1;
    if (l <= mid)
        modifyMod(lc, l, mid, p);
    if (r > mid)
        modifyMod(rc, mid + 1, r, p);
    pushup(u);
}

改成这样应该就能过了

void modifyMod(i64 u, i64 l, i64 r, i64 p) {
    if (l <= tr[u].l && tr[u].r <= r && tr[u].ma < p) return;
    if (tr[u].l == tr[u].r) {
        tr[u].ma = tr[u].sum %= p;
        return ;
    }
    i64 mid = (tr[u].l + tr[u].r) >> 1;
    if (r <= mid)
        modifyMod(lc, l, r, p);
    else if (l > mid)
        modifyMod(rc, l, r, p);
    else {
        modifyMod(lc, l, r, p);
        modifyMod(rc, l, r, p);
    }
    pushup(u);
}
2024/7/11 12:12
加载中...