LuoguP1268树的重量【构造/思维】By cellur925

题目传送门

Description

给你一个矩阵$M$,$M(i,j)$表示$i$到$j$的最短距离。定义树的重量为树上各边权之和,对于任意给出的合法矩阵$M$,已知它所能表示树的重量是唯一确定的。给出一个矩阵,求它所表示的树的重量。


Sol

这道题我想了一会发现什么思路都没有...然后企图画一点图也无济于事...

后来看题解发现我们其实可以从简单的角度入手,逐渐发现规律

当有两个点的时候,显然答案就是$g(1,2)$。

当有三个点的时候,如图,发生了分叉。(因为各点都是叶子节点)

(图片引用自 @TsReaper)

设蓝线部分为$len$,那么树的重量就是$g(1,2)$+$len$。那么$len$部分怎么求?稍微想想可以得出$len=g(1,3)+g(2,3)-g(1,2)$再除以2。

类比一下,当有四个...五个...六个...点的时候,也会在某一个路径上发生分叉,而一个点只可能从在它编号之前的点分叉而来。于是我们对于每个点,枚举一下它是从它之前哪个点分叉过来的,取个最小值累加即可得到答案。

Code

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<cstring>
 4 
 5 using namespace std;
 6 
 7 int n,ans;
 8 int f[50][50];
 9 
10 int main()
11 {
12     while(scanf("%d",&n)!=EOF&&n)
13     {
14         for(int i=1;i<=n-1;i++)
15             for(int j=i+1;j<=n;j++)
16                 scanf("%d",&f[i][j]),f[j][i]=f[i][j];
17         ans+=f[1][2];
18         for(int i=3;i<=n;i++)
19         {
20             int tmp=0x3f3f3f3f;
21             for(int j=2;j<=i-1;j++)
22                 tmp=min(tmp,(f[1][i]-f[1][j]+f[i][j])>>1);
23             ans+=tmp;
24         }
25         printf("%d\n",ans);
26         ans=0;
27         memset(f,0,sizeof(f));
28     }
29     return 0;
30 }
View Code

 

转载于:https://www.cnblogs.com/nopartyfoucaodong/p/9781581.html

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

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

相关文章

pydev插件安装方法

eclipse 版本&#xff1a; PYDEV:附件在本博客资源下载 下载附件后解压缩,将features和plugins个目录复制粘贴到eclipse相对应的目录下面&#xff0c;然后在启动Eclipse&#xff0c;在Help&#xff0d;》check for UPdates&#xff0c;然后弹出的界面即可看到pydev的插件。 …

将速度加快到自己的个人代码生成器中

Speedment是一个开放源代码工具箱 &#xff0c;可用于生成Java实体和管理器以与数据库进行通信。 如果您需要域模型的对象关系映射&#xff0c;那么这很好&#xff0c;但是在某些情况下&#xff0c;您可能希望使用数据库作为模板来生成完全不同的东西。 在本文中&#xff0c;我…

python3常用模块_Python3 常用模块1

os模块 通过os模块我们可以与操作系统交互, 控制文件和文件夹 对文件夹操作 # 判断是否为文件夹 os.path.isdir() # 创建文件夹 os.mkdir() # 删除文件夹 os.rmdir() # 列出文件夹内所有文件(返回列表) os.listdir() # 当前文件所在文件夹路径 os.getcwd() # 所在文件夹的路径 …

matlab求最短路径代码_【高等数学】复数,通往真理的最短路径

看图学数学&#xff01;可能是中国最好的高等数学的基础概念讲解&#xff0c;深入浅出、形象生动。没有高深的数学符号&#xff0c;只有你能懂的数学内容。在实数域中&#xff0c;连接两个真理的最短的路径是通过复数域----雅克阿达马现代数学家对复数的看法如斯&#xff0c;无…

怎么解决python Non-ASCII character错误

第一次接触Python&#xff0c;今天刚在Eclipse上安装完PyDev插件准备开始编程&#xff0c;用用简单例子进行调试竟然出现这样的错误&#xff0c; SyntaxError: Non-ASCII character \xef in file C:\Users\Administrator.NUY67O2SLHT6KM0\workspace\Hello World\scr\Hello.py …

Win7下VS2008破解方法

在Win7系统下&#xff0c;无法像xp下通过“控制面板”卸载的方法重新输入序列号来破解VS2008。 但可以通过以下几个步骤来破解&#xff1a; 1.首先需要安装VS2008&#xff0c;可以安装VS2008专业版90天试用版或VS2008团队版90天试用版都行。 VS2008专业版90天试用版下载地址&am…

五、Kafka 用户日志上报实时统计之应用概述

一、kafka 回顾 1.简介 Kafka 的业务 业务场景&#xff1a; 解除耦合  增加冗余  提高可扩展性  Buffering  异步通信2.介绍 Kafka 的应用场景 Push MessageWebsite Tracking日志收集中心3.实时统计平台搭建注意事项 实时统计平台搭建注意事项&#xff1a; HA特性核心文…

html5移动web开发黑马掌上商城_这套web前端与移动开发教程,帮助了众多小白转行就业...

前端即网站前台部分&#xff0c;运行在PC端&#xff0c;移动端等浏览器上展现给用户浏览的网页。随着互联网技术的发展&#xff0c;HTML5&#xff0c;CSS3&#xff0c;前端框架的应用&#xff0c;跨平台响应式网页设计能够适应各种屏幕分辨率&#xff0c;完美的动效设计&#x…

c++ 使用socket实现C/S端文件的下载传输

首先是服务器端&#xff0c;大致说下流程&#xff1a;服务器创建线程去处理应答accept()&#xff0c;当接受到客户端连接请求时&#xff0c;首先获取要发送的指定的文件数据总大小给客户端&#xff0c;接着就是循环读取要发送的文件数据流向客户端发送文件数据&#xff0c;每次…

Python报错UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe0 in position 0: ordinal not in range

Windows 7机器上安装Python2.7后&#xff0c;下载一些Package包进行setup时总是报错UnicodeDecodeError&#xff0c;如下&#xff1a; File "C:\Python27\lib\mimetypes.py", line 250, in enum_types ctype ctype.encode(default_encoding) # omit in 3.x! Unicode…

[MEGA DEAL]专家级Java捆绑包新手(96%)

在世界上最受欢迎的编程语言中从零变成英雄 嘿&#xff0c;怪胎&#xff0c; 本周&#xff0c;在我们的JCG Deals商店中 &#xff0c;我们提供了一个极端的报价 。 我们提供的专家Java捆绑版新手 仅售39美元&#xff0c;而不是原始价格1180美元 &#xff0c;是的&#xff0c…

对二分法思想的体会 及 结队编程情况汇报

算法课第二章作业 1. 对二分法思想的体会&#xff1a; 二分法是分治法的一种&#xff0c;当遇到大问题难以解决的时候&#xff0c;可以使用二分法将问题细化&#xff0c;提高效率&#xff0c;减小问题规模。例如二分搜索&#xff0c;有效率高的优点&#xff0c;但是这个优点的实…

python中对象的概念是什么_简述Python中的面向对象编程的概念

面向对象编程——Object Oriented Programming&#xff0c;简称OOP&#xff0c;是一种程序设计思想。OOP把对象作为程序的基本单元&#xff0c;一个对象包含了数据和操作数据的函数。 面向过程的程序设计把计算机程序视为一系列的命令集合&#xff0c;即一组函数的顺序执行。为…

python 出现 Handler': No module named win32api

在运行scrapy程序出现Handler: No module named win32api&#xff0c;出现错误的原因是安装的python后要下载相对应的win32api文档进行安装&#xff0c;安装后可以到Python27\Lib\site-packages看一下是否安装成功&#xff0c;若安装完成该文件夹底下就有相应文件。

输入输出

cin/cout 数据类型自动识别/使用简单&#xff0c;缺点是速度慢。若遇到比较大的数据规模&#xff0c;很大可能被卡。改掉这个习惯&#xff01; scanf()和getchar()函数是从输入流缓冲区中读取值的&#xff0c;而不是从键盘终端缓冲区读取。 读取字符时&#xff0c;scanf()以spa…

C++ Socket编程步骤

sockets&#xff08;套接字&#xff09;编程有三种&#xff0c;流式套接字&#xff08;SOCK_STREAM&#xff09;&#xff0c;数据报套接字&#xff08;SOCK_DGRAM&#xff09;&#xff0c;原始套接字&#xff08;SOCK_RAW&#xff09;&#xff1b;基于TCP的socket编程是采用的流…

python中的排序方法都有哪些_Python中的排序方法sort(),sorted(),argsort()等

Python list内置sort()方法用来排序&#xff0c;也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列。 1&#xff09;排序基础 简单的升序排序是非常容易的。只需要调用sorted()方法。它返回一个新的list&#xff0c;新的list的元素基于小于运算符(__lt__)…

javadoc maven_Maven Fluido Skin和Javadoc类图

javadoc maven我使用Maven网站已有一段时间了&#xff0c;对此我感到非常满意。 我不想在Maven 3之后更新我的项目&#xff0c;但是没关系&#xff0c;Maven 3带来了许多新奇的东西。 但是&#xff0c;有两件事使我感到烦恼&#xff1a;缺乏美观和现代的外观&#xff0c;以及浏…

Python的包管理工具

刚开始学习Python时&#xff0c;在看文档和别人的blog介绍安装包有的用easy_install, setuptools, 有的使用pip&#xff0c;distribute&#xff0c;那麽这几个工具有什么关系呢&#xff0c;看一下下面这个图就明白了 下面简单的介绍一下&#xff1a; Distribute是对标准库disu…

2018软工实践第六次作业-团队选题报告

组长博客地址&#xff1a;点击这里 选题报告内容 选题报告下载链接&#xff1a;点击下载本组评审表设计 评审表下载链接&#xff1a;点击下载评审表预览&#xff1a;NABCD 分析引用 NEED 需求 用户群体 主要针对人群&#xff1a;福州大学的广大师生群体以及食堂各个店铺用户数量…