P4198 楼房重建
个人总结
这题关键是要把 pushup2 写好。
int pushup(double cnt, int x, int l, int r){
if (t[x].mx <= cnt) return 0;//剪枝
if (a[l] > cnt) return t[x].len;//剪枝
if (l == r) return a[l] > cnt;//优化
int mid = (l + r) >> 1;
if (t[x * 2].mx <= cnt) return pushup(cnt, x * 2 + 1, mid + 1, r);//合并
else return pushup(cnt, x * 2, l, mid) + t[x].len - t[x * 2].len;//合并
}

浙公网安备 33010602011771号