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
![](/assets/blank.gif)
![](/assets/blank.gif)
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相关推荐
- 洛谷—— P1268 树的重量
P1268 树的重量 构造类题目,看不出个所以然来... emmm,只好看题解: 只有两个点,那一条路径就是$ans$ 考虑三个点,那么$3$这个点相对于树上的路径(已经加入树上的边的距离) 为:$( ...
- 数据结构——树和二叉树章节思维导图
数据结构--树和二叉树章节思维导图
- 洛谷1268树的重量(树)
题目描述 树可以用来表示物种之间的进化关系.一棵"进化树"是一个带边权的树,其叶节点表示一个物种,两个叶节点之间的距离表示两个物种的差异.现在,一个重要的问题是,根据物种之间的距离 ...
- 怎么用java构建哈夫曼树_Java代码构造哈夫曼树
1.问题描述 哈夫曼编码是广泛地用于数据文件压缩的十分有效的编码方法.其压缩率通常在20%-90%之间.哈夫曼编码算法用字符在文件中出现的频率表来建立一个用0,1串表示各字符的最优表示方式.一个包含1 ...
- 双数组trie树的基本构造及简单优化
一 基本构造 Trie树是搜索树的一种,来自英文单词"Retrieval"的简写,可以建立有效的数据检索组织结构,是中文匹配分词算法中词典的一种常见实现.它本质上是一个确定的有限状 ...
- CF构造思维题练习(1200-1400)
目录 CF1706A Another String Minimization Problem 1 CF1705B Mark the Dust Sweeper 2 CF1700B Palindromic ...
- 关于哈夫曼树的例题(含哈夫曼树的具体构造过程)
1.设在某通信系统中使用了八个字符,出现频率分别为0.08,0.05,0.1,0.12,0.26:0.18,0.14,0.07,试构造一棵哈夫曼树,给出哈夫曼编码,再写出先.中.后序遍历结果,最后将哈 ...
- 2017年ICPC西安邀请赛A、XOR(线段树套线性基 + 思维)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目传送门 Problem 给你 nnn 和 nnn 个整数的数组 aaa,以及kkk和qqq,有 q ...
- CodeForces - 1494E A-Z Graph(构造+思维)
题目链接:https://vjudge.net/problem/CodeForces-1494E 题目大意:给出一个初始时只有 nnn 个点的有向带权图,需要执行 mmm 次操作,每次操作分为下列三种 ...
最新文章
- ENVI帮助研究人员发现金矿
- 停航63天!湖北复航了,机票预订火爆程度堪比春运
- 分散mysql的写入压力_缓解MySQL写入压力和主从延迟的尝试
- OpenCV学习(17) 细化算法(5)
- Entity Framework 笔记(一)
- 【菜gou的CS61A学习笔记10 Abstraction Trees】
- Unity常见资源类型
- IT行业的发展前景分析
- 区块链 数据交易专利
- java语言实现菜单代码_java微信开发API微信自定义个性化菜单实现实例代码
- MySQL 8.0.17 第一次登录并修改密码
- 《分布式计算云计算与大数据》第一章
- 如何上传到GitHub的main分支而不是master分支
- 史上最强吃鸡电脑配件更新!这张显卡都能买一套房子了
- Minesweeper-Java
- 火狐浏览器(69版)修改起始页,主页和新标签页
- Fiddler抓包工具保姆级使用教程(超详细)
- 判天地之美,析万物之理
- win10自带的ssh使用方法
- C语言控制台简易计算器程序
热门文章
- HH SaaS电商系统的跨境商品展示、下单、清关、出库全流程设计
- HH SaaS电商系统的仓储系统设计
- python求字符串的所有子集_打印一字符串的所有子集 | 学步园
- java批量处理数据库语句_Java项目中调用bat批处理进行多用户数据库备份
- 听说,高手都用记事本写C语言代码?
- Linux C语言编程基本原理与实践
- 计算机主机中网卡的作用,计算机硬件组成及作用
- 中兴5250交换机配置手册_TSN工业交换机中文说明
- python mysql 连接6_寒假学习进度-6(Python连接MySQL数据库)
- python错误bug调试问题汇总