[Usaco2011open][BZOJ2444]焊接

这篇博客介绍了奶牛们在焊接电线时如何构建一个神奇的结构,并找到最小花费的策略。通过树上动态规划解决,利用队列优化算法,达到O(N²)的时间复杂度。博主分享了思路、优化技巧以及官方题解,讨论了电线焊接的成本计算和树形结构处理方法。
摘要由CSDN通过智能技术生成

【题目描述】

Description


奶牛们正在玩电线!他们学会了焊接:把两条电线连接起来,将某条的端点焊接到
另一条的中间某个位置(注意:不能够将两条电线的端点焊接起来,即中间某个位置
不包括端点)。当然,中间的同一个位置可以焊接多条电线。(并且焊接点必须为整数点,
这个好像英文题面没说,我是这么理解的)

奶牛们准备建造一个神奇的结构。它是一个N(1 <= N <= 50,000)个节点N-1条边的图,
并且任意两个节点连通。每条边通过两个整数A,B来表示(1 <= A <=N; 1 <= B <= N; A != B)。

奶牛们要从当地的店里买电线,然而,越长的电线就越贵,具体地:一条长度为L的电线
的售价为L*L,并且,电线是不允许连接或者裁断的。

给出奶牛准备建造的结构,请帮助奶牛们找出最小的花费。

Input


* 第一行: 一个整数 N

* 第二到N行: 每行两个整数A,B描述一条边

Output


* 第一行:一个整数表示最小的花费,注意这个整数可能超过32位二进制数。

Sample Input

6
1 2
1 3
1 4
1 5
1 6



Sample Output

7

OUTPUT DETAILS:

由于每个节点都和1号节点相连,因此,我们只要购买1条长度为2的电线和3条长度为1的电线即可。
总的花费为2 * 2 +1 * 1 + 1 * 1 + 1 * 1 = 7。


【解题思路】

英文题解(最下有)太长看不下去就去请教了一下大神,然后优化了一下O(N²)的算法就水过了。

状态f[i][j]表示,以i为根的子树,唯一一根接到i并且会在后面继续往上接的电线的当前长度为j的情况下的最小代价

转移有三种(蓝色为当前加入边)

1.蓝色电线截断在i

2.蓝色电线取代之前的电线接到子树外&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值