Loj#2324-「清华集训 2017」小 Y 和二叉树
1|0正题
1|1题目大意
给出个点的一棵树,每个点的度数不超过。
你要求它的一个二叉树结构(根任意选择)使得其中序遍历的字典序最小。
1|2解题思路
直接找根感觉比较麻烦,我们考虑先确定中序遍历中的第一个点。
显然这个点是最小的一个度数不为的节点,我们设为。
此时的左子树肯定没有节点,然后考虑它连接的点安排到右子树或者父节点。
先假设的度数是,因为下一步是遍历的右子树,所以我们优先比对两个连接的部分作为子树时字典序最小的第一个数是啥。
因为每个点的度数都不超过,整张图可能出现的子树(不同的根)数量为个(每条边的两个方向),我们可以先预处理出每个子树字典序最小时第一个是啥。
这样我们就能快速比较了。
然后考虑的度数是的时候,记它连接的节点是,
- 若的度数为,那随便丢哪都一样。
- 若的度数为,显然子节点时可以控制它和它子树的顺序,丢右子树肯定最优。
- 若的度数为,考虑丢右子树的优势是它一定可以控制左右两棵子树的顺序,而丢父节点的优势是可以优先把遍历掉,我们比较和作为儿子时子树中最小字典序的第一个数,这样就可以确定丢哪了。
至于被丢到子树里面的,我们上面的预处理可以确定子树里面的顺序。
时间复杂度:
1|3code
__EOF__

本文作者:QuantAsk
本文链接:https://www.cnblogs.com/QuantAsk/p/16482513.html
关于博主:退役OIer,GD划水选手
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/QuantAsk/p/16482513.html
关于博主:退役OIer,GD划水选手
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2021-07-15 AT2305-[AGC010D]Decrementing【博弈论】
2021-07-15 AT5661-[AGC040C]Neither AB nor BA【模型转换】
2021-07-15 CF573D-Bear and Cavalry【动态dp】
2021-07-15 CometOJ-[Contest #10]鱼跃龙门【exgcd】
2021-07-15 jzoj5101-[GDOI2017day2]凡喵识图【鸽笼原理】
2021-07-15 P1791-[国家集训队]人员雇佣【最大权闭合图】