线段树二分板子
Posted uid001
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线段树二分板子相关的知识,希望对你有一定的参考价值。
在[ql,qr]范围内找一个最大的位置pos, 使得[pos,qr]的和$\ge now$.
int now, pos, s[N<<2]; void find(int o, int l, int r, int ql, int qr) { if (pos) return; if (ql<=l&&r<=qr) { if (l==r) { if (s[o]>=now) pos=l; else now -= s[o]; return; } pd(o,l,r); if (s[rc]>=now) return find(rs,ql,qr); now -= s[rc]; return find(ls,ql,qr); } pd(o,l,r); if (mid>=qr) return find(ls,ql,qr); if (mid<ql) return find(rs,ql,qr); find(rs,ql,qr),find(ls,ql,qr); }
以上是关于线段树二分板子的主要内容,如果未能解决你的问题,请参考以下文章