codeforces#475 div1

B.    非常有意思的题目,但一开始没有想出来怎么证明。有点偏向于离散数学证明题。

  首先给出结论:当且仅当点的个数为奇数时可以构造出来一种删除序列。

  首先考虑证明必要性,每次删除操作相当于在原先的树上咔去偶数条边,从而必然有点的个数为奇数。

  考虑充分性,我们从深度较大的点到深度较小的点删除,每次对于一个点x,我们要么能将其子树删完,要么剩余一个联通的度数全都是奇数的子树,必然可以通过上面的点删除完。

  这样归纳到最后必然有形成的要么是一个度数全为奇数的树,要么能删空。

  而对于一个度数全为奇数的树,从一个点开始,归纳法:

    一个可以删空的子树如果根的初始度数为奇数,则必然是连接到奇数个可删空子树,有偶数*奇数 = 奇数个初始度数为偶数的点。

    另外三种情况同上,最终证明一个子树能删空 <=> 其中有奇数个初始度数为偶数的点。

  而对于一个有奇数个点的树,度数为偶数的点必然有奇数个。

  得证。

C.  要注意到本题目中

猜你喜欢

转载自www.cnblogs.com/allvphx/p/8971609.html