scoi2010股票交易
发布时间: 2021-05-31 20:54:13
⑴ scoi2010 operation哪位高手告诉一下怎么统计“[a, b]区间内最多有多少个连续的1”
恩,有点难
对于一个线段树的节点i,维护一个ls代表从左往右数最大的连续1的个数,rs是从右往左数最大连续1个个数,ss是这个节点最大的连续1个个数。如果ss=ls 或者 ss=rc 那么 ss=0
ss=max(左儿子的ss,右儿子的ss)
if 左儿子的rs>0 并且右儿子的ls>0 那么 ss=max(ss,左儿子的rs+右儿子的ls)
ls=左儿子的ls if 左儿子全是1 那么ls=ls+右儿子的ls
rs=右儿子的rs if 右儿子全是1 那么rs=rs+左儿子的rs
热点内容