胖娃儿二号 @ 2023-10-04 09:59:01
如果你 9pts,建议看看 pushup 里面是不是有逻辑错误。
比如:
nxt.left=max(ls.left,ls.sum+rs.left);
nxt.right=max(rs.right,rs.sum+ls.right);
nxt.maxx=max(max(ls.maxx,rs.maxx),ls.right+rs.left);
by HugoHu @ 2023-10-16 20:54:53
AZ,所以这是正确的还是错误的...
by HugoHu @ 2023-10-16 21:04:49
除了漏了要取这两个孩子之间的最大值还有别的问题吗?
by 胖娃儿二号 @ 2023-10-31 12:02:13
@HugoHu 这是错误的。
nxt.left=max(ls.left,ls.sum+rs.left);
nxt.right=max(**ls**.right,rs.sum+ls.right);
nxt.maxx=max(max(ls.maxx,rs.maxx),ls.right+rs.left);
by Dio_The_World @ 2023-11-05 19:46:50
void push_up(int p){//0->l 1->r
ans[2][p]=ans[2][ls]+ans[2][rs];
ans[0][p]=max(ans[0][ls],ans[2][ls]+ans[0][rs]);
ans[1][p]=max(ans[1][rs],ans[2][rs]+ans[1][ls]);
// ans[3][p]=max()
}
没问题啊