关于复杂度分析
  • 板块灌水区
  • 楼主___A__
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/8/3 12:40
  • 上次更新2024/8/3 16:03:39
查看原帖
关于复杂度分析
275860
___A__楼主2024/8/3 12:40

有以下代码

void add(int u){
    for(int i=0;i<2;i++){
        for(int j:seg[u].vec[i]){
            mp[i][j]++;
        }
    }
}
void del(int u){
    for(int i=0;i<2;i++){
        for(int j:seg[u].vec[i]){
            mp[i][j]--;
        }
    }
}
void solve(int u){
    add(u);
    if(seg[u].l==seg[u].r){
        ans[seg[u].l]+=mp[0][w[rnk[seg[u].l]]+depth[rnk[seg[u].l]]]+mp[1][w[rnk[seg[u].l]]-depth[rnk[seg[u].l]]],del(u);
        return;
    }
    solve(u*2),solve(u*2+1),del(u);
}

其中seg是线段树 维护了一个长度为n的数列 而且保证每个节点vector size的和为n(logn^2)

那么这段代码的复杂度是n(logn^3)还是n(logn^2)

2024/8/3 12:40
加载中...