樹的重量怎么計算,洛谷—— P1268 樹的重量

 2023-11-19 阅读 20 评论 0

摘要:?P1268 樹的重量 ? 構造類題目,看不出個所以然來。。。 樹的重量怎么計算。emmm,只好看題解: 只有兩個點,那一條路徑就是$ans$ 考慮三個點,那么$3$這個點相對于樹上的路徑(已經加入樹上的邊的距離) 一般樹木如何估計重量,為

?P1268 樹的重量

?

構造類題目,看不出個所以然來。。。

樹的重量怎么計算。emmm,只好看題解:

只有兩個點,那一條路徑就是$ans$

考慮三個點,那么$3$這個點相對于樹上的路徑(已經加入樹上的邊的距離)

一般樹木如何估計重量,為:$(dis[1][3]+dis[2][3]-dis[1][2])/2$

?

秒啊,這樣就可以求出那一條藍邊的長度了

樹的重量增加是從哪里來的,

?考慮四個點的情況

最重的樹?對于第四個點,我們發現單純只求$(dis[1][4]+dis[2][4]-dis[1][2])/2$得到的答案并不是我們想要的,重復了一部分

轉而考慮$3$,那么$(dis[1][3]+dis[3][4]-dis[1][3])/2$這樣得到的答案才是我們所想要的

?

那么對于每個點加入樹上的邊的答案為

$min((dis[1][i]+dis[j][i]-dis[1][j])/2)$

?

#include<bits/stdc++.h>using namespace std;int d[30][30],n;int main()
{while(scanf("%d",&n)!=EOF){if(!n) break;for(int i=1;i<n;i++){for(int j=i+1;j<=n;j++)scanf("%d",&d[i][j]);}int sum=d[1][2];for(int i=3;i<=n;i++){int tmp=0x7fffffff;for(int j=2;j<i;j++){tmp=min(tmp,(d[1][i]+d[j][i]-d[1][j])/2);}sum+=tmp;}printf("%d\n",sum);}return 0;
}

?

轉載于:https://www.cnblogs.com/song-/p/9832567.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/179390.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息