cf 1060e 树形dp 树上任意两点的距离和

题意:

给出一个树,把树上任意两个相隔一个点的点加一条边,问加完边之后任意两点的距离和是多少.

 

参考博客 :https://blog.csdn.net/Mr_Treeeee/article/details/82960566

思路:枚举边的贡献

算出所有点与点之间的距离(不跳的真实距离)。树形DP解决。

可以算每条边被走了几次,边(u,v)被走了的次数=u的后面(前面)所有节点数*v的后面(前面)所有节点数。

实际上就是 一个是u的子树的大小(x),和n-x。  一边和另一边嘛。很容易想通。对于所有边的和,就是距离之和ans了。

然后如果都是偶数距离,是不是直接除2就行了。但是我们有奇数

奇数距离,是奇数层(深度deep) 和偶数层的点之间的。

所以再记录一下奇数层(y)有几个点就行了。剩下来的都是偶数点。

[ans-y*(n-y)]/2,这个为一直跳着走的距离。(减去y*(n-y) ,如果这些奇数多出来的1,加起来除2,答案就多了很多了)

然后加回来。

最终答案为[ans-y*(n-y)]/2+y*(n-y).

 

#include<bits/stdc++.h>
using namespace std;#define ll long long
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(v) v.begin(),v.end()const int N = 2E5+4;vector<int>V[N];
int vis[N];
int num[N],d[N];void dfs(int t,int deep){num[t]=1;vis[t]=1;for(int i=0;i<V[t].size();++i){if(vis[V[t][i]])continue;vis[V[t][i]]=1;d[V[t][i]]=deep+1;dfs(V[t][i],deep+1);num[t]+=num[V[t][i]];}
}int main(){int n;cin>>n;int u,v;for(int i=1;i<n;++i){scanf("%d %d",&u,&v);V[u].pb(v);V[v].pb(u);}dfs(1,0);ll ans= 0 ;ll c=0;for(int i=1;i<=n;++i){///枚举每条边的贡献///由于跳步的原因  偶数的可以直接除以2 但是下面这个是所有的ans+=num[i]*(long long)(n-num[i]);if(d[i]%2==1) c++;}ll  k = c*(n-c);///减去奇数距离的 /2  然后再加上奇数距离的ans = (ans-k)/2+k;cout<<ans<<endl;return 0;
}

 

转载于:https://www.cnblogs.com/wjhstudy/p/9822234.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366964.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

再谈前后端分离

前段时间我针对手头上的项目前端配置进行了反思以及总结并且写了两篇文章: webpack传统后端渲染的项目前端配置, webpack配置之前后端不分离, 很显然这些配置能满足一时的需求, 但是也有不足. 今天继续总结, 这里应该不涉及到具体后端语言, 只对前端配置进行描述. 毕竟配置工程…

JAVA中带有数字签名的XML安全性

介绍 如您所知&#xff0c;XML在我们的产品或项目开发中起着重要作用&#xff0c;并且从XML文档中我们收集了很多信息&#xff0c;而且我们可以对XML文件执行CRUD操作。 但是&#xff0c;关于如何确保XML文件中可用的数据是真实的以及数据来自受信任的可靠来源&#xff0c;这是…

mysql的命令行常用命令_mysql命令行常用命令

第一招、mysql服务的启动和停止net stop mysqlnet start mysql第二招、登陆mysql语法如下&#xff1a; mysql -u用户名 -p用户密码键入命令mysql -uroot -p&#xff0c; 回车后提示你输入密码&#xff0c;输入12345&#xff0c;然后回车即可进入到mysql中了&#xff0c;mysql的…

Python - day1 借鉴洪卫

一、了解开发语言 1、高级语言&#xff1a;Python&#xff0c;Java&#xff0c;C&#xff0c;C#&#xff0c;PHP&#xff0c;JS&#xff0c;Go&#xff0c;Ruby&#xff0c;SQL&#xff0c;Swift&#xff0c;Perl&#xff0c;Objective-C&#xff0c;R等等&#xff1b; 2、低级…

返回一个二维整数数组最大子数组的和

要求&#xff1a; 1&#xff0c;输入一个二维整形数组&#xff0c;数组里有正数也有负数。 2&#xff0c;二维数组中连续的一个子矩阵组成一个子数组&#xff0c;每个子数组都有一个和, 3&#xff0c;求所有子数组的和的最大值。 设计思路&#xff1a; 参照一维整数数组求解最大…

基于React的表单开发的分析(上)

本文主要讲解后台系统与表单相关的页面开发&#xff0c;并分析如何才能更好地、高效地开发。 技术栈 ReactAntd 背景 Antd 以下我都将Ant Design 简称为 Antd Ant Design是个服务于企业级产品的UI框架&#xff0c;主要可以用于中后台系统,它有基于React、Vue和Angular的实现…

50个Servlet面试问答

Servlet是Java EE的一个非常重要的主题&#xff0c;所有Web应用程序框架&#xff08;例如Spring和Struts&#xff09;都建立在它之上。 这使servlet成为Java访谈中的热门话题。 在这里&#xff0c;我提供了50个servlet面试问题的列表&#xff0c;并提供了答案&#xff0c;以帮…

在vue中使用font-awesome

1、安装 cnpm i font-awesome -S 2、在main.js中引入 import font-awesome/css/font-awesome.min.css 转载于:https://www.cnblogs.com/wuln/p/9072084.html

深入浅出的webpack4构建工具--webpack4+react构建环境(二十)

下面我们来配置下webpack4react的开发环境&#xff0c;之前都是针对webpack4vue的。下面我们也是在之前项目结构的基础之上进行配置下。 首先看下如下是我为 webpack4react 基本的项目结构如下&#xff1a; ### 目录结构如下&#xff1a; demo1 …

Webpack 4进阶--从前的日色变得慢 ,一下午只够打一次包

从前的日色变得慢&#xff0c;车&#xff0c;马&#xff0c;邮件都慢&#xff0c;一生只够爱一个人 -- 《从前慢》 近期在团队项目里把Webpack升级到4.4.1&#xff0c;过程中发现现存的升级文档十分有限&#xff0c;踩了不少坑&#xff0c;好在升级之后提升还算显著&#xff0c…

使用Guava MapSplitters配置Hadoop

在本文中&#xff0c;我们将为通过Context对象将配置参数传递给Hadoop Mapper提供新的思路。 通常&#xff0c;我们在启动map-reduce作业时将配置参数设置为Context对象上的键/值对。 然后&#xff0c;在Mapper中&#xff0c;我们使用键来检索用于我们的配置需求的值。 不同之处…

pdo 参数化查询 mysql函数_PDO笔记之参数化查询

参数化查询解释在这里&#xff1a;Wiki参数化查询 (少有的Wiki中文比英文介绍的要详细的编程条目)PDO中参数化查询主要用到prepare()方法&#xff0c;然后这个方法会返回一个PDOStatement对象&#xff0c;也就SQL声明(不知道怎么翻译)&#xff0c;此时SQL语句只是被编译&#x…

二叉树和哈希表的优缺点对比与选择

二叉树(binary tree)和哈希表(hash table)都是很基本的数据结构&#xff0c;但是我们要怎么从两者之间进行选择呢&#xff1f;他们的不同是什么&#xff1f;优缺点分别是什么&#xff1f; 回答这个问题不是一两句话可以说清楚的&#xff0c;原因是在不同的情况下&#xff0c;选…

编码Java时的10个微妙的最佳实践

这是10个最佳实践的列表&#xff0c;这些最佳实践比您的平均Josh Bloch有效Java规则要微妙得多。 尽管Josh Bloch的列表很容易学习&#xff0c;并且涉及日常情况&#xff0c;但此处的列表包含了涉及API / SPI设计的较不常见的情况&#xff0c;但可能会产生很大的影响。 我在编…

Vue 实现微信 jssdk 扫码, 上传图片

流程 1: 配置微信公众号JS域名 2:前端发送URL后台获取JSSDK配置, 后台Service代码如下, 修改2处位置: WeixinUtil.APPID > 当前公众号APPID WeixinUtil.getAccessToken() > 当前公众号access_token public interface IWxJssdkService {Map<String, Object> getJssd…

有意思的前端函数面试题

1:考引用类型在比较运算符时候 隐式转换会调用本类型那个方法 toString和valueOf&#xff1f;(去年过年吵的很火国外的题) if(a 1 && a 2 && a 3){console.log("我走进来了"); }<!--答案1:--> var a {num:0}; a.valueOf function(){retur…

用java写个简单的直播强求_全网最简单易懂的Netty入门示例,再不会用Netty我直播吃翔...

//server引导类ServerBootstrap serverBootstrap new ServerBootstrap();//boss 对应 IOServer.java 中的接受新连接线程,主要负责创建新连接NioEventLoopGroup boss new NioEventLoopGroup();//worker 对应 IOServer.java 中的负责读取数据的线程,主要用于读取数据以及业务逻…

XamarinAndroid组件教程设置自定义子元素动画(一)

XamarinAndroid组件教程设置自定义子元素动画(一) 如果在RecyclerViewAnimators.Animators中没有所需要的动画效果&#xff0c;就可以自定义一个。此时&#xff0c;需要让自定义的动画继承BaseItemAnimator抽象类。 【示例1-2】下面以RecylerViewAnimatorsItemAnimator项目为基…

使用Storm进行可扩展的实时状态更新

在本文中&#xff0c;我将说明如何借助Storm框架以可扩展且无锁定的方式在数据库中维护实时事件驱动流程的当前状态。 Storm是基于事件的数据处理引擎。 它的模型依赖于基本原语&#xff0c;例如事件转换&#xff0c;过滤&#xff0c;聚合……&#xff0c;我们将它们组合成拓扑…

python关于字典嵌套字典,列表嵌套字典根据值进行排序

python 对于字典嵌套字典&#xff0c; 列表嵌套字典排序 例&#xff1a;列表嵌套自字典&#xff1a;d [{"name": 张三, s: 68}, {name: 李四, s: 97}] 对于列表嵌套字典可以使用python的sorted()方法&#xff0c;也可以使用list的sort()方法&#xff1a; sorted方法…