我不理解,为什么要判到 M+1 位?
N=qd(),M=qd(),Q=qd();K=qd();a[0]=1;
for(int i=2;i<=N;i++) a[0]+=(qd()>K);
for(int i=1;i<=M;i++){
int len=qd();
a[i]+=a[i-1]+len;
while(len--){
int x=qd();if(x<K) a[i+1]--;
b[i].push_back(x);
}
}
build(1,1,M+1);
while(Q--){
int x=qd(),y=qd(),z=qd();
if((b[x][y-1]<K)^(z<K)) change(1,1,M+1,x+1,z>K?1:-1);
b[x][y-1]=z;
printf("%d\n",f[1].v<=N);
}
其中线段树是区间加区间求最小值。
但是我第 M 位 rank 后挪裁员数,而第 M+1 位只会对原本数目修正向前挪。
实在是无法理解。