LG1268树的重量
#include<bits/stdc++.h>
using namespace std;
#define N 35
#define INF 1e9
int dis[N][N],n,len,ans;
int main(){
while(scanf("%d",&n)){
if(!n) break;
for(int i=;i<=n;i++)
for(int j=i+;j<=n;j++)
scanf("%d",&dis[i][j]),dis[j][i]=dis[i][j];
ans=dis[][];
for(int i=;i<=n;i++){
len=INF;
for(int j=;j<=n;j++)
for(int k=j+;k<=n;k++)
if(j!=i && k!=i)
len=min(len,(dis[i][j]+dis[i][k]-dis[j][k])/);
ans+=len;
}
printf("%d\n",ans);
}
return ;
}
一道构造题。666
锻炼思维的好题,需要运用一些树的性质。以下用g(i,j)表示点i与点j之间的距离。
首先,我们考虑n=2时的情况,很显然答案就是g(1,2)。
接下来考虑n=3时的情况。由于所有点均为叶子节点,很显然点3是从点1到点2的路径上分叉出来的,就像下图。

设蓝色部分长度为len,那么答案就是g(1,2)+len。len怎么求呢?显然,len = (g(1,3)+g(2,3)-g(1,2))/2。
n>3的情况也同理。枚举i,看看点n是不是从点1~i的路径上分叉出来的,求出的最小len就是要加到答案里面去的。如下图。

如果认为点4是从1~2的路径上分叉出来的,答案就会加上红色部分的长度。但是红色部分长度显然有一部分是多余的。只有认为点4是从1~3的路径上分叉出来的,才能加上正确答案(也就是蓝色部分)。
LG1268树的重量的更多相关文章
- 洛谷P1268 树的重量
P1268 树的重量 85通过 141提交 题目提供者该用户不存在 标签树形结构 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 有这种情况吗!!!! 题意似乎有问题 题目描述 树可以用来表 ...
- 洛谷P1268 树的重量 【构造 + 枚举】
题目描述 树可以用来表示物种之间的进化关系.一棵"进化树"是一个带边权的树,其叶节点表示一个物种,两个叶节点之间的距离表示两个物种的差异.现在,一个重要的问题是,根据物种之间的距离 ...
- P1268 树的重量
题目描述 树可以用来表示物种之间的进化关系.一棵“进化树”是一个带边权的树,其叶节点表示一个物种,两个叶节点之间的距离表示两个物种的差异.现在,一个重要的问题是,根据物种之间的距离,重构相应的“进化树 ...
- 洛谷 P1268 树的重量 解题报告
P1268 树的重量 题目描述 树可以用来表示物种之间的进化关系.一棵"进化树"是一个带边权的树,其叶节点表示一个物种,两个叶节点之间的距离表示两个物种的差异.现在,一个重要的问题 ...
- LuoguP1268树的重量【构造/思维】By cellur925
题目传送门 Description 给你一个矩阵$M$,$M(i,j)$表示$i$到$j$的最短距离.定义树的重量为树上各边权之和,对于任意给出的合法矩阵$M$,已知它所能表示树的重量是唯一确定的.给 ...
- 洛谷—— P1268 树的重量
P1268 树的重量 构造类题目,看不出个所以然来... emmm,只好看题解: 只有两个点,那一条路径就是$ans$ 考虑三个点,那么$3$这个点相对于树上的路径(已经加入树上的边的距离) 为:$( ...
- P1268 树的重量【构造】
题目描述 树可以用来表示物种之间的进化关系.一棵“进化树”是一个带边权的树,其叶节点表示一个物种,两个叶节点之间的距离表示两个物种的差异.现在,一个重要的问题是,根据物种之间的距离,重构相应的“进化树 ...
- [Luogu P1268] 树的重量 (巧妙的构造题)
题面 传送门:https://www.luogu.org/problemnew/show/P1268 Solution 这是一道极其巧妙的构造题 先做一个约定[i,j]表示从i到j的距离 我们可以先从 ...
- P1268 树的重量(板子)
题目: 题目描述 树可以用来表示物种之间的进化关系.一棵"进化树"是一个带边权的树,其叶节点表示一个物种,两个叶节点之间的距离表示两个物种的差异.现在,一个重要的问题是,根据物种之 ...
随机推荐
- Extjs 3.4 复选框的,默认选中 ,禁用,(纯属于自己代码中需要,总结!)
var sm = new Ext.grid.CheckboxSelectionModel( { //一个特定的选择模型,它将渲染一列复选框,可以用来选择或反选多行数据. ...
- spring使用elasticsearch 5.x
elasticsearch客户端选择 这里使用transport建立elasticsearch客户端 applicationContext.xml配置,属性可以采用读取属性文件的方式.参考类Prope ...
- 运行TLD
TLD(跟踪学习检测)是英国萨里大学的捷克学生Zdenek Kalal在其2010的一篇论文中提出的实时性较好的单目标长时间跟踪算法.其主页上有相关的文章下载,源码是从这里下载的,还可以找到安装步骤, ...
- Windows Azure Table storage 之 动态Table类 DynamicTableEntity
在一般情况下,当我们在.net中使用Azure table storage的时候都会为该表建立一个TableEntity的派生类,如下所示. public class CustomerEntity : ...
- IOS调试lldb命令常用,po,
lldb命令常用(备忘) 假如你准备在模拟器里面运行这个,你可以在"(lldb)"提示的后面输入下面的: (lldb) po $eax LLDB在xcode4.3或者之后的版本里面 ...
- [JavaScript]JavaScript处理iframe的动作
随着W3C一声令下,几年前使用非常频繁的frameset + frame已完成使命,光荣退伍.作为frameset的替代方案(姑且这么称吧),iframe的使用也多了起来.较frameset方案,if ...
- asp.net core 使用 StaticFiles 中间件 (不完整翻译)
原文地址:https://docs.asp.net/en/latest/fundamentals/static-files.html 设置静态资源根目录 在 Startup.cs 中的 Configu ...
- Android Volley完全解析
1. Volley简介 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据.Android系统中主要提供了两种方式来进行H ...
- btrfs使用方法
创建文件系统 mkfs.btrfs 命令建立一个 btrfs 格式的文件系统.可以用如下命令在设备 sda5 上建立一个 btrfs 文件系统,并将其挂载到 /btrfsdisk 目录下: #mkfs ...
- R----stringr包介绍学习
1. stringr介绍 stringr包被定义为一致的.简单易用的字符串工具集.所有的函数和参数定义都具有一致性,比如,用相同的方法进行NA处理和0长度的向量处理. 字符串处理虽然不是R语言中最主要 ...