牛马厌氧程序求原因
  • 板块学术版
  • 楼主typerxiaozhu
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/7/26 10:12
  • 上次更新2024/7/26 11:17:03
查看原帖
牛马厌氧程序求原因
807832
typerxiaozhu楼主2024/7/26 10:12

我写一道标记永久化的题目 https://www.luogu.com.cn/problem/UVA10587

然后单点查询是这样写的

int query(int u, int x, int s)
{
    if (tr[u].l == x && tr[u].r == x) 
    {
        s = max(s, tr[u].v);
        return s;
    }
    s = max(s, tr[u].v);
    int mid = tr[u].l + tr[u].r >> 1;
    if (x <= mid) query(u << 1, x, s);
    else query(u << 1 | 1, x, s);
}

结果开 O2 RE,改成这样之后就 AC 了

int query(int u, int x, int s)
{
    if (tr[u].l == x && tr[u].r == x) 
    {
        s = max(s, tr[u].v);
        return s;
    }
    s = max(s, tr[u].v);
    int mid = tr[u].l + tr[u].r >> 1;
    if (x <= mid) s = max(s, query(u << 1, x, s));
    else s = max(s, query(u << 1 | 1, x, s));
    return s;
}

单点查询线段树难道不是一定能找到吗(保证了 xx 一定合法),为什么要写返回值

2024/7/26 10:12
加载中...