zoj 1298 Domino Effect || poj 1135(zoj排名第二!!泪奔!!)

211 篇文章 0 订阅

纠结了昨天一下午外加晚上快睡觉前的一段时间外加今天上午的一个小时,这道最短路径的题终于AC啦!!!泪奔!!!

 

我想想该怎么说这个算法呢。

 

恩。

 

这道题是寻找多米诺骨牌的最终停下的位置,从牌1开始,如果1连接条路,两条路可以同时开始倒,以后也是,如果key点连接多条路,到达key点时,连接的所有路都开始倒。

 

我的想法是:

1、用dijkstra找最短路径,从这些最短路径中寻找最长的路。

2、寻找三角形。比如下面这个图(我画的哦~~)黑色数字代表key点,红色代表边长。你所需做的工作就是,从2开始找与2连接的点,

距离为1到2的最短路径+(比如找到3)到1的最短路径+2 3之间的距离,一直找下去,直到这个距离最大。下面这个图的最大值是1到4的最短路径(5)加1到5的最短路径(2)加4 5 之间的距离(5),为12。如果中间不能连接,不进入循环。得到的这个12/2为时间,端点4,5(这个需要在循环中保存)。

。。

 

3、判断12/2是否比最短路径中的最长路径大,大的话最后一定是在某两个点之间停止。小的话一定是在最短路径中的最长路径的那个key点停止。

 

 

中间细节问题都很好想的,我想了好多组测试数据呀。。。1 0,这个数据比较特殊,输出0.0s 1,可以单独处理也可以不用,看自己的算法了。

 

很开心~~哈哈哈哈哈哈哈哈哈~~排名第二哦~~~第一是用FPC写的,128KB,我用C写的160,哈哈~~~成就感!!!

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值