CF1060E Sergey and Subway

news/2025/2/12 8:19:40/

CF1060E Sergey and Subway

树上计数dp,考虑每条边的贡献,树上两点距离用深度与LCA表示

长度为2的两点间可以连一条边,所以对于任意两点 i , j i,j i,j d i s 2 i , j = ⌈ d i s i , j / 2 ⌉ = ( d i s i , j + ( d i s i , j % 2 = = 1 ) ) / 2 dis2_{i,j}=\lceil dis_{i,j}/2 \rceil=(dis_{i,j}+ (dis_{i,j}\%2==1) )/2 dis2i,j=disi,j/2=(disi,j+(disi,j%2==1))/2
对于前半部分,我们要求原图上所有点对的距离,通过树形dp计算每条边对两端点集的贡献即可
对于后半部分,我们只需另外统计一下在原图中两点距离为奇数的点即可,对于任意两点: d i s i , j = d e p i + d e p j − 2 ∗ L C A i , j dis_{i,j}=dep_i+dep_j-2*LCA_{i,j} disi,j=depi+depj2LCAi,j 显然式子中的2*LCA不对奇偶产生影响,所以只需要处理出各点深度即可

#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;cin>>n;vector<vector<int>> e(n+1);for (int i=1;i<n;i++){int a,b;cin>>a>>b;e[a].push_back(b);e[b].push_back(a);}vector<int> dep(n+1);vector<ll> sz(n+1);ll ans=0,cnt=0;function<void(int,int)> dfs=[&](int u,int fa){sz[u]=1;for (auto v:e[u]){if (v==fa) continue;dep[v]=dep[u]+1;dfs(v,u);sz[u]+=sz[v];}cnt+=(dep[u]%2==1);ans+=sz[u]*(n-sz[u]);};dep[1]=1;dfs(1,-1);cout<<(ans+cnt*(n-cnt))/2;return 0;
}

http://www.ppmy.cn/news/58533.html

相关文章

while语句和until语句顺便带点小实验

while语句和until语句 一、while用法二、Until循环语句三、趣味小实验猜价格的游戏&#xff08;价格是随机数&#xff09;写一个计算器脚本闲来无事去购物 一、while用法 for循环语句非常适用于列表对象无规律&#xff0c;且列表来源以固定&#xff08;如某个列表文件&#xf…

【SpringBoot2】三:基础入门---自动配置原理(自动配置原理入门+开发技巧)

文章目录 1.自动配置原理入门1.1 引导加载自动配置类1.2 按需开启自动配置项1.3 修改默认配置1.4 最佳实践 2.开发小技巧2.1 Lombok2.1.1 简化Bean开发2.1.2 简化日志开发 2.2 dev-tools2.3 Spring Initailizr&#xff08;项目初始化向导&#xff09; 1.自动配置原理入门 1.1 …

Java复习提纲--课后习题

目录 第一章习题1 一、问答题 二、选择题 三、阅读程序 第二章习题2 一、问答题 二、选择题 三、阅读或调试程序 第三章习题3 一、问答题 二、选择题 三、阅读程序 第四章习题4 一、问答题 二、选择题 三、阅读程序题 第五章习题五 一、问答题 二、选择题 …

汇编---Nasm

文章目录 比较流行的汇编语言有3种:不同风格的汇编语言在语法格式上会有不同: 实战代码&#xff1a;Intrinsic函数手写汇编&#xff08;8086汇编&#xff09;调用C的API库函数调用约定实际代码 C调用汇编函数进行计算纯C实现如下&#xff1a;CASM实现:纯ASM实现:ASM打印命令行参…

【Halcon】 Halcon 22.11 安装详细教程

文章目录 1安装2 获取许可证 license2.1 license下载2.2 激活 license放置在相应文件夹下 3 DLT 安装 1安装 1.解压安装包 2.打开运行 exe 程序 跳转至页面 点击“可获得的”&#xff0c;并安装 选择&#xff1a; AVAILABLE ->INSTALL 可获得的 ->安装 5. 等待安装 6…

Docker Harbor

目录 一、Docker Harbor概述 1、Harbor的优势 2、Harbor知识点 3、Docker私有仓库架构 二、Harbor构建Docker私有仓库 1、环境配置 2、案例需求 3、部署docker-compose服务 4、部署harbor服务 5、启动harbor ① 访问 ② 添加项目并填写项目名称 ③ 通过127.0.0.1来…

C++入门(内容补充)

目录 前言 1.auto关键字 1.1 auto的使用细则 1.2 auto不能推导的场景 2. 基于范围的for循环(C11) 2.1 范围for的使用条件 3.指针空值nullptr(C11) 3.1 C98中的指针空值 前言 之前给大家更新了一系列关于C的基础语法&#xff0c;那么今天小编再给大家进行部分内容的补充…

C++好难(2):类和对象(上篇)

okay&#xff0c;从这里开始&#xff0c;就进入c比较难的部分了~啊啊啊&#xff01;&#xff01;&#xff01; (﹃ԅ) 坚持坚持啦 ~ ᵎ(•̀㉨•́)و ̑̑ 【本章目标】 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 5.类的作用域 6.类的实…