在查询最大连续长度的时候
返回值要统计 左侧最大连续长度 , 右侧最大连续长度 , 区间最大连续长度。
并且统计最大值的时候,不要像我这样写:
ans.rm1=b.rm1;
ans.lm1=a.lm1;
ans.m1=max(max(ans.lm1,ans.rm1),a.rm1+b.lm1);
其中 .m1代表区间最大,.lml/.rml 表示左/右侧最大连续长度。
ans是该区间答案,a是左孩子返回答案,b是右孩子~~
应该这样写:
ans.rm1=b.rm1;
ans.lm1=a.lm1;
ans.m1=max(max(a.m1,b.m1),a.rm1+b.lm1);
这种错误在数据范围小的时候往往能得到正确答案
所以可以过 样例,hack,讨论区数据,以及一些随机生成的小规模数据。
不过这么rj的错误也不会有别人错了