如何计算整体二分的复杂度?
  • 板块学术版
  • 楼主xiangixuan
  • 当前回复11
  • 已保存回复11
  • 发布时间2025/7/3 13:54
  • 上次更新2025/7/3 21:06:44
查看原帖
如何计算整体二分的复杂度?
1305692
xiangixuan楼主2025/7/3 13:54

如题,若整体二分的代码长这样,它的复杂度是多少?

int now, qid[N], lft[N], rgh[N];
void solve(int s, int t, int l, int r) {
	if(s>t || l>r) return;
	if(s==t) {
		for(int i=l; i<=r; ++i)
			ans[qid[i]]=s;
		return;
	}
	//O(k*mid) to do something
	
	int lftCnt=0, rghCnt=0;
	for(int i=l; i<=r; ++i) {
		int id=qid[i];
		if(/*O(v) to check the options*/) lft[++lftCnt]=id;
		else rgh[++rghCnt]=id;
	}
	for(int i=1; i<=lftCnt; ++i)
		qid[l+i-1]=lft[i];
	for(int i=1; i<=rghCnt; ++i)
		qid[l+lftCnt+i-1]=rgh[i];
	
	solve(s, mid, l, l+lftCnt-1);
	solve(mid+1, t, l+lftCnt, r);
}
2025/7/3 13:54
加载中...