正题

链接 需要纪中OJ账号
有n条木棒,长度为1或根号2,给出每根木棒两头的坐标,和燃烧需要的时间。只能从一个木棒的一头开始点火,求燃烧完所有木棒所需要的最短时间。


输入输出(需要自取)

Input

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

Output

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

Sample Input

输入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

Sample Output

输出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分钟。


解题思路

木棒可能在中间相连的情况只能在中间,所有加入一下中间点就好了。然后用Floyd最短路算出每个点到其他点的距离,不过所有的点烧完不代表木棒被烧完,所有我们需要枚举点开始烧的点,然后计算每个木棒需要燃烧的时间。


代码

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int a[1601][1601],n,x1,x2,x3,y1,y2,y3,m,wn;
bool mid[501];
double dis[501][501],mins,maxs,lon,ans,e[501][501];
int main()
{for (int i=0;i<=500;i++)for (int j=0;j<=500;j++){dis[i][j]=2147483647;e[i][j]=2147483647;}scanf("%d",&n);for (int i=1;i<=n;i++){scanf("%d%d%d%d%lf",&x1,&y1,&x2,&y2,&lon);x1+=400;x2+=400;y1+=400;y2+=400;//转换为正数x1*=2;x2*=2;x3=(x1+x2)/2;y1*=2;y2*=2;y3=(y1+y2)/2;//求中间的坐标lon/=2;//分为两条木棍if (!a[x1][y1]){m++;//加入新坐标a[x1][y1]=m;//表示该坐标的点编号}if (!a[x2][y2]){m++;a[x2][y2]=m;}if (!a[x3][y3]){m++;a[x3][y3]=m;mid[m]=true;}dis[a[x1][y1]][a[x3][y3]]=lon;dis[a[x3][y3]][a[x1][y1]]=lon;dis[a[x2][y2]][a[x3][y3]]=lon;dis[a[x3][y3]][a[x2][y2]]=lon;//记录e[a[x1][y1]][a[x3][y3]]=lon;e[a[x3][y3]][a[x1][y1]]=lon;e[a[x2][y2]][a[x3][y3]]=lon;e[a[x3][y3]][a[x2][y2]]=lon;}for (int k=1;k<=m;k++)for (int i=1;i<=m;i++)for (int j=1;j<=m;j++){if (dis[i][k]<2147483647 && dis[k][j]<2147483647)dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);//计算最短路}mins=2147483647;for (int k=1;k<=m;k++){if(mid[k]) continue; //排除在中间点ans=0;for (int i=1;i<=m;i++) ans=max(dis[k][i],ans);//取所有点烧完的所需时间for (int i=1;i<=m;i++)for (int j=i+1;j<=m;j++){if(e[i][j]<2147483647)if (dis[k][i]<e[i][j]+dis[k][j] && dis[k][j]<dis[k][i]+dis[i][j])//是否相接{ans=max(ans,max(dis[k][i],dis[k][j])+(e[i][j]-max(dis[k][i],dis[k][j])+min(dis[k][i],dis[k][j]))/2.0);//计算该木棒燃烧时间取最大值}}mins=min(ans,mins);//取最少的时间}printf("%.4lf",mins);
}

【2018.3.17】模拟赛之四-ssl1864jzoj1368 燃烧木棒【最短路,Floyd】相关推荐

  1. 2018.10.9模拟赛

    2018.10.9模拟赛 T1 trade 正解:贪心 据说lyd讲过但并没有印象QAQ,考场上现推浪费了不少时间 其实就开个小根堆,每次把堆顶取出来看它是不是比当前的 a[i]a[i]a[i] 小, ...

  2. 【2018.3.24】模拟赛之四-ssl2548 旋转【暴力模拟】

    正题 大意 给出一块黑块和白块组成的版,将其旋转90°后和之前的黑块叠加,求最初始和每次旋转后的黑块数. 解题思路 暴力模拟不解释 代码 #include<cstdio> #include ...

  3. 【2018.5.19】模拟赛之四-ssl2435 航空公司【并查集,二分】

    正题 题目大意 有n个点,给出坐标,选择所有距离在k之内的边要求联通所有点,求最小的k. 解题思路 垃圾解法 用二分答案然后加并查集求是否联通. 时间复杂度:O(mlogn)O(mlogn)O(mlo ...

  4. 【2018.5.12】模拟赛之四-ssl2416 条形图【高精度,dp】

    正题 题目大意 第iii行有n−i+1" role="presentation" style="position: relative;">n−i ...

  5. 【2018.4.21】模拟赛之四-ssl2405 巧克力【实际上是模拟】

    正题 大意 有n块巧克力,一个a*b的网格,如果网格可以完全包括一块巧克力就可以获得这块巧克力,求最多能获得的巧克力数量 解题思路 枚举点(在巧克力上的)和各种情况,然后判断这种情况包括多少个巧克力, ...

  6. 【2018.4.14】模拟赛之四-ssl2394 剪草【dp】

    正题 大意 有n株草,没个时间单位开始时会增长不同的长度.每个时间单位可以将一株草剪成高度为0,求多少时间单位后能够将草的总高度减低为h以下,或用远不能. 解题思路 首先需要一段玄学推理: 可以等草长 ...

  7. 【2018.4.7】模拟赛之四-ssl2385 猜数【水题】

    正题 大意 给出一些询问和答案,询问内容包括: 1. 是否大于一个数 2. 是否小于一个数 3. 是否大于等于一个数 4. 是否小于等于一个数 这是一个-10000到10000的数 求这个数的最小值 ...

  8. 【2018.3.31】模拟赛之四-ssl2408 句子【dp,字符串】

    正题 大意 先给出n个句子,然后给出一个最终句子.最终句子由多个句子加密后组成(可能重复).加密方法就是将字母调换位置,加密代价就是该位置与原来的字母不同的数量.求达到最终句子的最小加密代价 解题思路 ...

  9. 【2018.3.10】模拟赛之四-ssl2133 腾讯大战360【SPAF,图论,最短路径】

    目录地址 前言 打错了一个地方之接60,还有输出"Peace"能拿60.还有题目坑爹害得我用了哈希,可以无视 QAQ 正题 有一个n*n的图,有m条边,不知道几个城市,给出两个位置 ...

最新文章

  1. 数据挖掘分析的必要性
  2. java不使用IDE导入json
  3. Hadoop之Hadoop序列化
  4. 微软向Chromium贡献代码以优化浏览器滚动体验
  5. 后端学习 - JavaWeb
  6. Ubuntu下安装Chrome浏览器的两个方法
  7. MessagePack Jackson 数据大小
  8. cesium+ geoserverTerrainProvide+png展示3D高程图展示
  9. C#语法糖yield
  10. ISI CVPR journal ranking
  11. linux开发板系统备份
  12. 【电子器件笔记1】电阻参数和选型
  13. Android支付宝刷步数,蚂蚁森林刷步数小技巧(一键修改支付宝步数)
  14. Arduino零基础入门
  15. 内置python数据类型_python基础之数据类型及内置方法
  16. 2022年最新前端零基础学习路径
  17. php直播表情美颜的实现,如何在直播中实现优质的美颜SDK效果
  18. Excel-给条形统计图加走线趋势
  19. 互联网晚报 | 05月17日 星期二 | 郑州首套房贷利率最低降至4.4%;可口可乐被曝员工不得购买竞品...
  20. LOJ #573. 「LibreOJ NOI Round #2」单枪匹马 线段树

热门文章

  1. php 分享微博,php微信分享到朋友圈、QQ、朋友、微博
  2. formula 返回list_python正则实现计算器功能
  3. mysql 碎片率_MySQL数据碎片的整理和分析
  4. 机器学习之超参数调优——超参数调优的方法
  5. mysql查询语句4,MySQL(4):CRUD语句(2)——基本查询
  6. java并发练习之快乐影院
  7. [mybatis]全局配置文件标签顺序
  8. Maven编译项目时报错:不再支持源选项 5。请使用 6 或更高版本。 不再支持目标选项 1.5。请使用 1.6 或更高版本。
  9. [剑指offer]面试题35:第一个只出现一次的字符
  10. bim建筑绘图计算机要求,BIM考试报名条件:想要成为一级BIM建模师需要达到哪些要求?...