楼主也不知道这个问题算哪方面
这个题目算排名不是小于这个数的个数+1吗
这份代码是可以过的,
其中两个关键地方
for(int i=1;i<=n;i++) {
F.add(a[i],a[i]); f[i]=f[i-1]+F.query(lim)-F.query(a[i]);
G.add(a[i],1); g[i]=g[i-1]+a[i]*(G.query(a[i]-1));
}
for(int i=1;i<=m;i++)
S[i]+=S[i-1],A[q[i].id]=S[i]+qz[q[i].r]-qz[q[i].l-1];
但是如果改成
for(int i=1;i<=n;i++) {
F.add(a[i],a[i]); f[i]=f[i-1]+F.query(lim)-F.query(a[i]);
G.add(a[i],1); g[i]=g[i-1]+a[i]*(G.query(a[i]-1)+1);
}
//在预处理时加1
for(int i=1;i<=m;i++)
S[i]+=S[i-1],A[q[i].id]=S[i];
//最后不加前缀和
就不正确了
萌新不太理解这是为何,希望大佬解答 T^T