首页 > 其他分享 >【W的AC企划 - 第六期】树上分治

【W的AC企划 - 第六期】树上分治

时间:2023-08-06 23:45:45浏览次数:37  
标签:AC val 第六期 int siz self 分治 企划 auto

往期浏览

树上分治

点分治

讲解

每次选取树的重心进行递归分治,中阶算法,大部分模板不需要理解,但是每一题都需要对维护函数进行修改。复杂度 \(\mathcal O(N\log N)\) 。

个人封装

由于需要进行一定程度的修改,不符合结构体封装的原则,故没有使用结构体。

int root = 0, MaxTree = 1e18; //分别代表重心下标、最大子树大小
vector<int> vis(n + 1), siz(n + 1);
auto get = [&](auto self, int x, int fa, int n) -> void { // 获取树的重心
    siz[x] = 1;
    int val = 0;
    for (auto [y, w] : ver[x]) {
        if (y == fa || vis[y]) continue;
        self(self, y, x, n);
        siz[x] += siz[y];
        val = max(val, siz[y]);
    }
    val = max(val, n - siz[x]);
    if (val < MaxTree) {
        MaxTree = val;
        root = x;
    }
};

auto clac = [&](int x) -> void { // 以 x 为新的根,维护询问
    
};

auto dfz = [&](auto self, int x, int fa) -> void { // 点分治
    vis[x] = 1; // 标记已经被更新过的旧重心,确保只对子树分治
    clac(x);
    for (auto [y, w] : ver[x]) {
        if (y == fa || vis[y]) continue;
        MaxTree = 1e18;
        get(get, y, x, siz[y]);
        self(self, root, x);
    }
};

get(get, 1, 0, n);
dfz(dfz, root, 0);

题单

  1. 321C - Ciel the Commander:思路启蒙题,分治寻找重心;
  2. P3806 【模板】点分治1:洛谷模板题;
  3. P2634 [国家集训队] 聪聪可可:洛谷另一道模板题,与上一题几乎一致;

标签:AC,val,第六期,int,siz,self,分治,企划,auto
From: https://www.cnblogs.com/WIDA/p/17610362.html

相关文章

  • nacos系列:spring cloud使用nacos实现配置管理和服务发现
    目录版本说明创建项目版本说明IDEA:2021.3Maven:3.6.3Jdk:17Spring-Boot:2.6.13Spring-Cloud:2021.0.5Spring-Cloud-Alibaba:2021.0.5.0创建项目1、选择SpringInitalizr2、选择需要安装的版本和依赖3、修改pom文件<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns......
  • 华为datacom-HCIA学习之路
    华为datacom-HCIA华为datacom-HCIA11.第四弹51.1.OSPF认证51.1.1.基于接口认证51.1.1.1.接口认证更优先61.1.1.2.[R2]interfaceg0/0/161.1.1.3.[R2-g0/0/1]ospfauthentication-modesimplehuawei61.1.1.3.1.明文认证61.1.1.4.[R2-g0/0/1]ospfauthentication-mo......
  • traceroute nslookup dig用法
    traceroutenslookupdig用法1,traceroute路由追踪格式:tracerouteIP地址[root@localhost~]#traceroute192.168.1.200tracerouteto192.168.1.200(192.168.1.200),30hopsmax,60bytepackets1 192.168.1.200(192.168.1.200) 0.417ms!X 0.293ms!X 0.178......
  • 【Nacos篇】Nacos基本操作及配置
    官方文档:https://nacos.io/zh-cn/docs/v2/ecology/use-nacos-with-spring-cloud.html前置条件:SpringCloud脚手架单机模式下的Nacos控制台:<dependencies><!--Registry注册中心相关--><dependency><groupId>com.alibaba.cloud</group......
  • nacos系列:简介和安装
    目录版本选择安装windows安装centos安装mysql方式存储官网:https://nacos.iogithub:https://github.com/alibaba/nacos或https://kgithub.com/nacos-group/nacos-examplesgitee:https://gitee.com/mirrors/Nacosnacos示例:https://kgithub.com/nacos-group/nacos-examples下载......
  • Oracle 11g Windows迁移至linux方案
    1.前言根据迁移规范要求,特编写xxx数据库迁移至linux环境操作方案。2.方案描述2.1环境描述源库数据量为20T,操作系统为WindowsServer200864bit,数据库版本为oracle11.2.0.1,目标库操作系统为Linuxredhat7.6,数据库版本为11.2.0.4。详细信息如下:源端数据库:业务系统  数据库 I......
  • 为react项目添加开发/提交规范(前端工程化、eslint、prettier、husky、commitlint、sty
    因历史遗留原因,接手的项目没有代码提醒/格式化,包括eslint、pretttier,也没有commit提交校验,如husky、commitlint、stylelint,与其期待自己或者同事的代码写得完美无缺,不如通过一些工具来进行规范和约束。eslinteslint是一个代码校验工具,用来规范项目代码风格。初始化通过n......
  • 【腾讯云Cloud Studio实战训练营】React 快速构建点餐页面
    前言:CloudStudio是一个在线的云集成开发环境(IDE),可以让开发人员在浏览器中轻松地开发、测试、调试和部署应用程序。它提供了基于云的计算资源和工具,例如代码编辑器、编译器、调试器、版本控制系统和项目管理工具等,使开发人员可以在任何地点使用任何设备进行开发,而不需要在本地安装......
  • 使用Activate和Select方法选中单元格的异同
    尽管使用Activate方法和Select方法都能选中指定的单元格区域,但这两种方法并不完全相同。例如,选中A1:F5单元格区域后,再分别用两种方法选中B5单元格,我们可得: 选中单元格区域后,再使用Activate方法激活该区域里的一个单元格,该区域依然呈选中状态,只改变活动单元格为激活的单元格。如......
  • Linux下Nacos安装与配置
    Nacos作注册中心与配置中心准备Nacos依赖Java环境来运行Java环境下载&配置GIT环境安装Mysql环境安装1、安装:从https://nacos.io/zh-cn/index.html下载最新版并解压tar-xvfnacos-server-1.4.0.tar.gz或从git拉取gitclonehttps://github.com/alibaba/naco......