【每日一题】4月3日题目精讲 DFS

题号 NC13886
名称 Shortest Path
来源 西南交通大学第十三届ACM决赛
戳我进入往期每日一题汇总贴~

简单说一下汉语题意:

给你一棵 个节点的树(保证 是偶数),你需要将 个节点分为 个点对,使得每个点对的两个点的距离的和最小。

首先我们可以通过观察得到以下几点:

首先,在最短的距离和之中一条边一定不会被覆盖两次,如图,我们一定可以找到一种方法来交换配对,把重复的边去掉(其他的边是不会变的)。也就是说对于一条边来说,其实只有选和不选两种可能。

图片说明

第二,对于一个点x,它子树中的点一定会尽量在子树中找到匹配的点内部消化掉(要么连父亲要么连兄弟),只有根是有可能会往上找一个点来匹配(不然又会出现重复覆盖一条边的情况)。

那么如果我们不去想点怎么两两配对而是来考虑每个边选不选——对于当前点 ,如果它的子树大小(包括它自己)有偶数个点,那么肯定在子树里面就互相连完了,它不需要向上连;如果是奇数个点, 就需要去匹配上面的点了,所以 向它父亲连的边就要选。然后就没有然后啦!

这个题告诉我们,要善于对题目进行转换,题目让匹配点这个操作是比较困难的,所以我们可以选择通过选边来替代它,问题就简单了。
代码可戳我查看~
看完邓老师的题解,记得自己去做题提高呀~
欢迎各位大佬来做题写题解,也欢迎大家踊跃在当日讨论贴中提问!

活动奖励:

在牛客博客中写出题解,并回复地址
审核通过可获得(依据题目难度和题解的内容而定)

本道题目4月11日中午12:00之前写的题解有获得牛币资格~

牛客博客开通方式

  1. 如何开通牛客博客:https://www.nowcoder.com/discuss/202952
  2. 如何使用博客搬家功能:进入博客--->设置--->底部博客搬家
  3. 如果你对牛客博客有任何意见或建议:牛客博客意见反馈专贴
全部评论
https://blog.nowcoder.net/n/88d48a870ea9431b9610b6d5422a4240
1 回复 分享
发布于 2020-04-02 13:52
https://blog.nowcoder.net/n/ced3c3a314404507b35cc85787f8bc16 codeforces 的一道题的简化版:https://codeforces.ml/contest/1281/problem/E
1 回复 分享
发布于 2020-04-02 15:13
https://blog.nowcoder.net/n/9ead616f837e4f6bbd9d4e7556349b77  
1 回复 分享
发布于 2020-04-02 18:02
https://blog.nowcoder.net/n/8b8446df5380428a8fe7de4e8fb586bf
1 回复 分享
发布于 2020-04-03 16:43
https://blog.nowcoder.net/n/1441b86bb3764fa1bf399ad1bdb24696
1 回复 分享
发布于 2020-04-08 21:28
https://blog.nowcoder.net/n/a413712f53864e9fbc77052c767220b0
点赞 回复 分享
发布于 2020-04-02 12:00
https://blog.nowcoder.net/n/b1cc5ea9a3ef491a9489367f0f87bf56
点赞 回复 分享
发布于 2020-04-02 12:14
https://blog.nowcoder.net/n/99e0851c3deb4c088a539bdc3f67599d 
点赞 回复 分享
发布于 2020-04-02 12:40
https://blog.nowcoder.net/n/b261f17c93d846e19606d36f774ecb83
点赞 回复 分享
发布于 2020-04-02 13:03
https://blog.nowcoder.net/n/18c113c16cd44b60888b9efa68349efa
点赞 回复 分享
发布于 2020-04-02 14:53
https://blog.nowcoder.net/n/6dcc4ce9d1734bd5ac183ae8ca0edf5b
点赞 回复 分享
发布于 2020-04-02 15:02
https://blog.nowcoder.net/n/bffa4b5588fb4f038fec2042c47c1595
点赞 回复 分享
发布于 2020-04-02 15:04
https://blog.nowcoder.net/n/097219bde7884e789fdce0c8f8ede498
点赞 回复 分享
发布于 2020-04-02 16:11
https://blog.nowcoder.net/n/3f9196478cab4603954eafe4636669f8
点赞 回复 分享
发布于 2020-04-02 16:19
https://blog.nowcoder.net/n/c8858f137e4a4095841fb0d18bf7e05a
点赞 回复 分享
发布于 2020-04-02 17:10
https://blog.nowcoder.net/n/7d1141ba3a2e4ec9854f0561c5882053
点赞 回复 分享
发布于 2020-04-02 17:28
https://blog.nowcoder.net/n/ddac7a815dba43aa89b08b75c62219cf
点赞 回复 分享
发布于 2020-04-02 17:47
https://blog.nowcoder.net/n/81d0f23e527240adbfc8a83837b96012
点赞 回复 分享
发布于 2020-04-02 18:15
https://blog.nowcoder.net/n/03e00340c79d4b6ea58b994b29702c71
点赞 回复 分享
发布于 2020-04-02 20:00
https://blog.nowcoder.net/n/8ea094cc320e428fadcf5cea2236680b
点赞 回复 分享
发布于 2020-04-02 20:03

相关推荐

威猛的小饼干正在背八股:挂到根本不想整理
点赞 评论 收藏
分享
ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
4 收藏 评论
分享
牛客网
牛客企业服务