题目传送门

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

LuoguP1268树的重量【构造/思维】By cellur925相关推荐

  1. 洛谷—— P1268 树的重量

    P1268 树的重量 构造类题目,看不出个所以然来... emmm,只好看题解: 只有两个点,那一条路径就是$ans$ 考虑三个点,那么$3$这个点相对于树上的路径(已经加入树上的边的距离) 为:$( ...

  2. 数据结构——树和二叉树章节思维导图

    数据结构--树和二叉树章节思维导图

  3. 洛谷1268树的重量(树)

    题目描述 树可以用来表示物种之间的进化关系.一棵"进化树"是一个带边权的树,其叶节点表示一个物种,两个叶节点之间的距离表示两个物种的差异.现在,一个重要的问题是,根据物种之间的距离 ...

  4. 怎么用java构建哈夫曼树_Java代码构造哈夫曼树

    1.问题描述 哈夫曼编码是广泛地用于数据文件压缩的十分有效的编码方法.其压缩率通常在20%-90%之间.哈夫曼编码算法用字符在文件中出现的频率表来建立一个用0,1串表示各字符的最优表示方式.一个包含1 ...

  5. 双数组trie树的基本构造及简单优化

    一 基本构造 Trie树是搜索树的一种,来自英文单词"Retrieval"的简写,可以建立有效的数据检索组织结构,是中文匹配分词算法中词典的一种常见实现.它本质上是一个确定的有限状 ...

  6. CF构造思维题练习(1200-1400)

    目录 CF1706A Another String Minimization Problem 1 CF1705B Mark the Dust Sweeper 2 CF1700B Palindromic ...

  7. 关于哈夫曼树的例题(含哈夫曼树的具体构造过程)

    1.设在某通信系统中使用了八个字符,出现频率分别为0.08,0.05,0.1,0.12,0.26:0.18,0.14,0.07,试构造一棵哈夫曼树,给出哈夫曼编码,再写出先.中.后序遍历结果,最后将哈 ...

  8. 2017年ICPC西安邀请赛A、XOR(线段树套线性基 + 思维)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目传送门 Problem 给你 nnn 和 nnn 个整数的数组 aaa,以及kkk和qqq,有 q ...

  9. CodeForces - 1494E A-Z Graph(构造+思维)

    题目链接:https://vjudge.net/problem/CodeForces-1494E 题目大意:给出一个初始时只有 nnn 个点的有向带权图,需要执行 mmm 次操作,每次操作分为下列三种 ...

最新文章

  1. ENVI帮助研究人员发现金矿
  2. 停航63天!湖北复航了,机票预订火爆程度堪比春运
  3. 分散mysql的写入压力_缓解MySQL写入压力和主从延迟的尝试
  4. OpenCV学习(17) 细化算法(5)
  5. Entity Framework 笔记(一)
  6. 【菜gou的CS61A学习笔记10 Abstraction Trees】
  7. Unity常见资源类型
  8. IT行业的发展前景分析
  9. 区块链 数据交易专利
  10. java语言实现菜单代码_java微信开发API微信自定义个性化菜单实现实例代码
  11. MySQL 8.0.17 第一次登录并修改密码
  12. 《分布式计算云计算与大数据》第一章
  13. 如何上传到GitHub的main分支而不是master分支
  14. 史上最强吃鸡电脑配件更新!这张显卡都能买一套房子了
  15. Minesweeper-Java
  16. 火狐浏览器(69版)修改起始页,主页和新标签页
  17. Fiddler抓包工具保姆级使用教程(超详细)
  18. 判天地之美,析万物之理
  19. win10自带的ssh使用方法
  20. C语言控制台简易计算器程序

热门文章

  1. HH SaaS电商系统的跨境商品展示、下单、清关、出库全流程设计
  2. HH SaaS电商系统的仓储系统设计
  3. python求字符串的所有子集_打印一字符串的所有子集 | 学步园
  4. java批量处理数据库语句_Java项目中调用bat批处理进行多用户数据库备份
  5. 听说,高手都用记事本写C语言代码?
  6. Linux C语言编程基本原理与实践
  7. 计算机主机中网卡的作用,计算机硬件组成及作用
  8. 中兴5250交换机配置手册_TSN工业交换机中文说明
  9. python mysql 连接6_寒假学习进度-6(Python连接MySQL数据库)
  10. python错误bug调试问题汇总