关于操作3
查看原帖
关于操作3
172370
fzj2007楼主2021/4/6 11:46

RT。

如果有一组数据是

7
1 1
1 1
1 4
1 4
1 5
1 9
3 8

那么对于唯一的查询3 8的答案显然是 66

但是题解中有不少Treap输出 55

所以以下写法应该是错的(?)

int qrank(int x,int val){
	if(!x) return 0;
	if(t[x].val==val) return t[lc(x)].siz+1;
	else if(t[x].val<val) return t[lc(x)].siz+t[x].num+qrank(rc(x),val);
	else return qrank(lc(x),val);
}
cout<<qrank(root,val)<<endl;

然而这个写法过了本题......

2021/4/6 11:46
加载中...