rt,在对于右边的散块时,有的写法可能是倒序枚举,在此题中,由于是最大子段和,所以在询问时倒序是错误的。
r 是右端点,id[i] 是 i 所属的块的编号,ed=id[r],ll[i] 表示第 i 个块的左端点。
r
id[i]
i
ed=id[r]
ll[i]
错误的写法:
for(int i=r;id[i]==ed;i--)
正确的写法:
for(int i=ll[ed];i<=r;i++)