警钟敲烂

P4513 小白逛公园

胖娃儿二号 @ 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()
}

没问题啊


|