[CSP-S模拟测试]:Tree(贪心)

Posted wzc521

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[CSP-S模拟测试]:Tree(贪心)相关的知识,希望对你有一定的参考价值。

题目描述

给定一颗$n$个点的树,树边带权,试求一个排列$P$,使下式的值最大

$$\sum \limits_i=1^n-1maxflow(P_i,P_i+1)$$

其中$maxflow(s,t)$表示从点$s$到点$t$之间的最大流,即从$s$到$t$的路径上最小的边权


输入格式

第一行一个整数$n$,表示点数
下接$n−1$行,每行三个数$u,v,w$表示一条连接点$u$和点$v$权值为$w$的边


输出格式

输出一行一个整数,表示答案


样例

样例输入:

2
1 2 2333

样例输出:

2333


数据范围与提示

对于前$5\%$的数据满足$n\leqslant 8$
对于前$40\%$的数据满足$n\leqslant 200$
对于前$60\%$的数据满足$n\leqslant 2,000$
对于$100\%$的数据满足$n\leqslant 100,000$


题解

我也不是到这是什么玄学神题……

码个对拍惊喜的发现其实就是边权和,然而我考试的时候暴力没打对于是只有$95$分……

证明可以用贪心(有时间再证吧……)

记得开$long\ long$就好了,否则$0$分的哦~

时间复杂度:$\Theta(n)$。

期望得分:$100$分。

实际得分:$100$分。


代码时刻

#include<bits/stdc++.h>
using namespace std;
int n;
long long ans;
int main()

	scanf("%d",&n);
	for(int i=1;i<n;i++)
	
		int w;
		scanf("%d%d%d",&w,&w,&w);
		ans+=w;
	
	printf("%lld",ans);
	return 0;


rp++

以上是关于[CSP-S模拟测试]:Tree(贪心)的主要内容,如果未能解决你的问题,请参考以下文章

[CSP-S模拟测试]:爬(贪心)

[CSP-S模拟测试]:C(三分+贪心)

[CSP-S模拟测试]:d(贪心+树状数组)

[CSP-S模拟测试]:Emotional Flutter(贪心)

[CSP-S模拟测试]:优化(贪心+DP)

[CSP-S模拟测试]:赛(贪心+三分)