看一下你的 push_up 函数 :
void push_up(int x)
{
t[x].sum = t[ls(x)].sum + t[rs(x)].sum;
t[x].hismx = max(t[ls(x)].hismx,t[rs(x)].hismx);
if(t[ls(x)].mx == t[rs(x)].mx)
{
t[x].mx = t[ls(x)].mx;
t[x].cnt = t[ls(x)].cnt + t[rs(x)].cnt;
t[x].dx = max(t[ls(x)].dx,t[rs(x)].dx);
}
else if(t[ls(x)].mx > t[rs(x)].mx)
{
t[x].mx = t[ls(x)].mx;
t[x].cnt = t[ls(x)].cnt;
t[x].dx = max(t[rs(x)].mx,t[ls(x)].dx);
}
else
{
t[x].mx = t[rs(x)].mx;
t[x].cnt = t[rs(x)].cnt;
t[x].dx = max(t[ls(x)].mx,t[rs(x)].dx);
}
}
里边的第二个 else if 有没有写 else 。
因为这个锅de了一上午bug。。。