有解时当且仅当满足以下条件:
p和c的数量相等当不相等时,显然无法回到同一层,故此时无解。
在最小深度层上,要么同时存在
l操作和r操作,要么两者都不存在。- 若只存在其中一种操作,显然无法回到同一棵子树上,因此无解。然后由于向左和向右的移动距离都是任意的,因此只要两种操作均存在,即可构造出一种方案使得能够回到原结点上,而不需要
l操作数量与r相等。 - 至于其它层,可以通过跨层操作来消除移动的影响,如
lpc通过先到父结点再返回同层的一个兄弟结点来消除l操作的影响。
- 若只存在其中一种操作,显然无法回到同一棵子树上,因此无解。然后由于向左和向右的移动距离都是任意的,因此只要两种操作均存在,即可构造出一种方案使得能够回到原结点上,而不需要
因此得到如下代码:
1 | void solve () |