求解子段用线段树就可以快速做到,跟网上的主流做法不同,我线段树节点记录的是区间最大最小前缀和,查询的话只需询问区间[c,d]的最大前缀和 和 [a-1,b-1]的最小前缀和,两者一减就是最大的区间和,再判断它是否大于等于0 。这样子好写,而且效率更高 。(虽然不知道为什么,估计是优化到常数上了,当时是跑了940MS,排到了十三名,之前都没一题排这么前过 。。。)
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include