首页 > 其他分享 >P9369 [ICPC2022 Xi'an R] Tree

P9369 [ICPC2022 Xi'an R] Tree

时间:2023-08-04 21:59:01浏览次数:51  
标签:ICPC2022 Xi 长链 int Tree len son lp 集合

我们可以发现每个点集要么是一个链,要么是不同子树中的许多点。

那么显然,如果我们想要取一个链作为集合,那么只有把这个链一直取到叶子才是最优的。

那么我们考虑把这棵树做长链剖分,假设我们得到了 p 条长链,每条长链的长度为 lp_i。

假设我们一开始全都用第二类集合来划分,那么答案显然是整棵树最大的深度。这个答案也可以看做是将所有长链的底端对其以后水平放置,同一行的点划分进一个点集的结果,也就是这些长链的最大长度。显然同一行中的点不存在祖先关系。

考虑贪心选择一些长链作为第一个集合,显然因为第二类集合的数量应该是“剩余长链的最大长度”,所以选择最长的长链必然最优。

将 lp_i 从大到小排序,枚举我们选择了前 i 条长链作为第一类集合,那么剩余的长链作为第二类集合的集合数量是 lp_{i+1},因此答案就是 i+lp_{i+1}。

时间复杂度 O(n)。

部分代码:

void dfs1(int x) {
    for (int y : g[x]) {
        dfs1(y);
        if (len[y] > len[son[x]]) son[x] = y;
    }
    len[x] = len[son[x]] + 1;
}
void dfs2(int x, int l = 0) {
    if (!son[x]) lp.push_back(l);
    else {
        dfs2(son[x], l + 1);
        for (int y : g[x]) if (y != son[x]) dfs2(y, 1);
    }
}

AC记录

标签:ICPC2022,Xi,长链,int,Tree,len,son,lp,集合
From: https://www.cnblogs.com/DreamerBoy/p/17607112.html

相关文章

  • python fitz模块报错RuntimeError: Directory ‘static/’ does not exist 解决方案
    报错fitz模块报错RuntimeError:Directory‘static/’doesnotexist原因使用Python处理PDF文档时,需要使用fitz模块。由于Python3.8以上版本与fitz有兼容问题,会出现以下错误信息:RuntimeError:Directory‘static/’doesnotexist解决办法卸载fitz模块,安装pymupdf模块......
  • CVE-2021-22204 GitLab RCE之exiftool代码执行漏洞深入分析(二)
    文章写于2022-01-19,首发在天融信阿尔法实验室目标导读1前言2前置知识2.1JPEG文件格式2.2Perl模式匹配3exiftool源码调试到漏洞分析3.1环境搭建3.2漏洞简介3.3exiftool是如何解析嵌入的0xc51b标签3.4exiftool是如何调用parseAnt函数3.5parseAnt函数分......
  • VMware ESXi 7.0 U3n macOS Unlocker & OEM BIOS (标准版和厂商定制版) 2023年8月更新
    VMwareESXi7.0U3nmacOSUnlocker&OEMBIOS(标准版和厂商定制版)2023年8月更新ESXi7.0标准版和Dell(戴尔)、HPE(慧与)、Lenovo(联想)、Inspur(浪潮)、Cisco(思科)定制版镜像请访问原文链接:https://sysin.org/blog/vmware-esxi-7-u3-oem/,查看最新版。原创作品,转......
  • SSRS 2016 DeviceInfo Name already exists Parameter name: deviceInfoName
    https://learn.microsoft.com/en-us/answers/questions/784851/ssrs-2016-deviceinfo-name-already-exists-parameterhttps://social.msdn.microsoft.com/Forums/sqlserver/en-US/5b4acc6d-058b-4c40-b916-cc634bb35f61/ssrs-2012-deviceinfo-name-already-exists-parmeter-n......
  • DXP TreeList 目录树
    DXPTreeList目录树1.需求背景需要一个支持勾选,拖动节点,保存各节点顺序的目录树。2.创建目录树在treeList控件中添加两个colunm用来显示绑定数据和显示值。接下来对treeList的属性进行设置//设置列不显示treeList.OptionsView.ShowColumns=......
  • layui-tree 设置子父级节点联动
    1vue版本2.5.6231、设置选择父级节点,子级节点不联动选择45①前端代码67layui.use(['tree','util'],function(){8vartree=layui.tree;9varutil=layui.util;10tree.render({11elem:'#dept_tree',12......
  • 封装的axios请求
    axios实例常用配置letrequest=axios.create({baseURL:'http://localhost:8080',//请求的域名,基本地址timeout:5000,//请求的超时时长,单位毫秒url:'/data.json',//请求的路径method:'get,post,put,patch,delete',//请求方法headers:{token:''//比如to......
  • vue中使用axios发送请求时在header中设置请求头发现请求发送两次
    问题:vueaxios跨域请求,在RequestHeaders加Authorization传递Token时,发现统一请求触发了两次,第一次是RequestMethod:OPTIONS请求。原因:跨域请求时,浏览器会首先使用OPTIONS方法发起一个预请求,判断接口是否能够正常通讯。如果通讯异常,则不会发送真正的请求,如果测试通讯正常,则开......
  • Sourcetree解决冲突步骤
    Sourcetree解决冲突步骤解决冲突的时候,操作已暂存文件,不操作未暂存文件第一步:找到冲突文件——.py文件且有标识,打开外部合并工具BeyondCompare第二步:视图-->隐藏中心窗格第三步:点击“显示差别”,则窗口只剩下有区别的内容第四步:自行选择想要的内容,然后点击箭头即采用右边......
  • 使用 Axios 进行 HTTP GET 请求的详尽指南
    在进行网络请求时,axios 是一个非常常用的请求库。本文将介绍如何使用axios发起GET请求,并详细列出传参的几种写法。同时会提供一个实践案例,其中包含基本路由与请求处理的过程,并确保在IDE编辑器中可以顺利运行。什么是axios的GET请求?在开始之前,让我们简要了解一下axios......