非常智障的错误:
如果你的询问循环是这么写的:
for(int i=1,ans=1,l,r;i<=m;i++){
cin>>l>>r;
while(1){
int sum=find_inter(root[l-1],root[r],1,inf,1,ans);
if(sum>=ans) ans=sum+1;
else break;
}
cout<<ans<<'\n';
}
这样写的 ans
是没有初始化的
应该:
for(int i=1;i<=m;i++){
int ans=1,l,r;
cin>>l>>r;
while(1){
int sum=find_inter(root[l-1],root[r],1,inf,1,ans);
if(sum>=ans) ans=sum+1;
else break;
}
cout<<ans<<'\n';
}