警示后人,如果你是线段树
查看原帖
警示后人,如果你是线段树
312820
Chinshyo楼主2023/9/22 14:22

直接二分答案是会TLE的,只有30pts!

这样写就T了

//		if(suf >= tmpk) {
//			while(l <= r) {
//				//cout << l << " " << r << endl;
//	 			int mid = (l + r) >> 1;
//				if(check(mid, pre + tmpk)) {
//					ans = mid;
//					r = mid - 1;
//				} else {
//					l = mid + 1;
//				}
//			}
//		} else {
//			while(l <= r) {
//				//cout << l << " " << r << endl;
//	 			int mid = (l + r) >> 1;
//				if(check(mid, tmpk - suf)) {
//					ans = mid;
//					r = mid - 1;
//				} else {
//					l = mid + 1;
//				}
//			}
//		}

由于人数是在变化的,在线段树上dfs会更高效。(其实本质也是二分)

int binsearch(int x, int l, int r, int rk) {
	if(l == r) return l;
	int mid = (l + r) >> 1;
	if(tr[lc] >= rk) return binsearch(lc, l, mid, rk);
	else return binsearch(rc, mid + 1, r, rk - tr[lc]);
}
2023/9/22 14:22
加载中...