警示后人
查看原帖
警示后人
759710
LuoFeng_Nanami楼主2023/9/3 16:48

如果你像我一样用了 Treap 且 WA on #1,那么把

inline int GetRankByVal(int p,int val){
	if(p == 0)
		return 0;
	if(val == a[p].val)
		return a[a[p].l].size + 1;
	if(val < a[p].val)
		return GetRankByVal(a[p].l,val);
	return GetRankByVal(a[p].r,val) + a[a[p].l].size + a[p].cnt;
}

改为

inline int GetRankByVal(int p,int val){
	if(p == 0)
		return 1;
	if(val == a[p].val)
		return a[a[p].l].size + 1;
	if(val < a[p].val)
		return GetRankByVal(a[p].l,val);
	return GetRankByVal(a[p].r,val) + a[a[p].l].size + a[p].cnt;
}

《算法竞赛进阶指南》 上有错误。

2023/9/3 16:48
加载中...