SSL P1864 燃烧木棍 题目

提高组 燃烧木棍

Time Limit:10000MS  Memory Limit:65536K
Total Submit:23 Accepted:16
Case Time Limit:1000MS

Description

Tom是调皮的孩子,特别喜欢玩火,现在他手上有若干根长度分别为1和 的木棍,还有一张不能燃烧的平板,他把平板划分成长度为1的单元格,并标上座标。然后按以下规则把平板上的木棍组成一个连通图:木棍的两端必须放在单元格的顶点上。即长度为1的木棍放在单元格的某一边上,长度为 的木棍放在单元格的对角线上。

Tom的点火规则是,只能从木棍的两端点火,而不能从木棍的中间点火。如图,不能在A点点火,但在C点或B点点火都是充许的。点火后,火会沿着木棍向前燃烧(每根都有自己的燃烧速度),并能点燃与它相接的其它木棍。
任务:写一程序计算从哪里开始点火,使得燃烧的总时间最短,输出最短时间。

Input

输入文件 bete.in 第一行为一个正整数N,表示组成图形的木棍数目,后面共有N行,每行5个数: X1 Y1 X2 Y2 T,其中(X1, Y1)和(X2, Y2)分别表示木棍两端的坐标,T表示木棍燃烧时间,是指从木棍的某一端点火燃烧到别一端,燃完所需的时间。

Output

输出文件 bete.out 是一个保留4位小数的实数,表示所有木棍完全燃烧的最少时间。

Sample Input

输出文件 bete.out 是一个保留4位小数的实数,表示所有木棍完全燃烧的最少时间。
约束  1≤n≤40
保证图形是连通的,所有的木棍长度都是1或   ,没有任何两根木棍重合.
-200≤X1, Y1, X2, Y2≤200; 0≤T≤107.
如果你的输出结果与标准答案相差小于0.001,则认为你的结果正确。

Sample Output

样例1
1
0 0 1 1 1


样例2
5
0 0 0 1 1
1 0 0 1 10
0 0 1 0 1
0 0 1 1 1
2 2 1 1 1

样例3
3
1 1 1 2 10
1 2 2 2 10
1 1 2 2 50

Hint

样例1
1.0000
从任一端点火都行,燃烧时间都是1

样例2
3.2500
在 (0,0)位置点火
木棍 1, 3 和 4 将被点燃,燃烧0.5分钟后,木棍2将被从中间点燃向两端燃烧,再过0.5分钟,木棍1, 3, 4 将被完全燃烧,木棍5 将被点燃并在1分钟后燃烧完 (比木棍2早燃完)。
木棍2从中间向两端燃烧0.5分钟以后,变成两小段,每段的燃烧时间是4.5 分钟。但因为此时两小段木棍的另一端也同时被点燃,燃烧速度变成原来的两倍,还需2.25 分钟的燃烧时间, 所以总时间: 1 + 2.25 = 3.25



样例3
35.0000
在 (1,2)位置点火, 木棍(1 1, 1 2) 和(1 2, 2 2)将燃烧 10 分钟。. 最后一根木棍在10分钟后从两端被点燃,燃烧时间为25分钟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值