警示后人(50pts WA on #5,6,7,9,10)
查看原帖
警示后人(50pts WA on #5,6,7,9,10)
569235
w9095楼主2024/7/4 22:40

50 pts

long long query(long long x,long long l,long long r,long long k)
{
	if(l==r)return tr[x].v;
	long long mid=(l+r)>>1;
	if(k<=tr[lc[x]].p)return query(lc[x],l,mid,k);
	else if(k>tr[lc[x]].p)return tr[lc[x]].v+query(rc[x],mid+1,r,k-tr[lc[x]].p);
}

100 pts

long long query(long long x,long long l,long long r,long long k)
{
	if(l==r)return k*l;//注意这一行
	long long mid=(l+r)>>1;
	if(k<=tr[lc[x]].p)return query(lc[x],l,mid,k);
	else if(k>tr[lc[x]].p)return tr[lc[x]].v+query(rc[x],mid+1,r,k-tr[lc[x]].p);
}

需要注意一个节点可能会有多个元素,如果元素个数大于剩余的 kk 但是直接返回所有元素的和就会导致 WA。

2024/7/4 22:40
加载中...