目录

  • 目录
  • 原题
    • Description
    • Input
    • Output
    • Sample Input
    • Sample Output
    • Data Constraint
  • 题解
    • 40分
    • 100分
      • 模型转换
      • 做法
      • I
      • II
      • III
  • 小结

原题

Description

菩萨为行,福慧双修,智人得果,不忘其本。
——唐·慧立《大慈恩寺三藏法师传》
有才而知进退,福慧双修,这才难得。
——乌雅氏
如何福慧双修?被太后教导的甄嬛徘徊在御花园当中。突然,她发现御花园中的花朵全都是红色和蓝色的。她冥冥之中得到了响应:这就是指导她如何福慧双修的!现在御花园可以看作是有N块区域,M条小路,两块区域之间可通过小路连接起来。现在甄嬛站在1号区域,而她需要在御花园中绕一绕,且至少经过1个非1号区域的区域。但是恰好1号区域离碎玉轩最近,因此她最后还是要回到1号区域。由于太后教导她要福慧双修,因此,甄嬛不能走过任何一条她曾经走过的路。但是,御花园中来往的奴才们太多了,而且奴才们前行的方向也不一样,因此甄嬛在走某条小路的时候,方向不同所花的时间不一定一样。天色快暗了,甄嬛需要尽快知道至少需要花多少时间才能学会如何福慧双修。如果甄嬛无法达到目的,输出“-1”。

Input

第一行仅2个正整数n,m,意义如题。
接下来m行每行4个正整数s,t,v,w,其中s,t为小路所连接的两个区域的编号,v为甄嬛从s到t所需的时间,w为甄嬛从t到s所需的时间。数据保证无重边。

Output

仅一行,为甄嬛回到1号区域所需的最短时间,若方案不存在,则输出-1

Sample Input

输入1:
3 3
1 2 2 3
2 3 1 4
3 1 5 2
输入2:
3 2
1 2 1 1
2 3 1 2

Sample Output

输出1:
8
输出2:
-1
[样例解释]
对于第一个数据:路径为1->2->3->1,所需时间为8,而1->3->2->1所花时间为9。因此答案为8.

Data Constraint

对于40%的数据:n<=1,000; m<=5,000
对于100%的数据:1<=n<=40,000; 1<=m<=100,000; 1<=v,w<=1,000

题解

40分

我们可以每次枚举与1直接相连的点i,然后删掉这条从1到i的边,然后跑一遍最短路算法即可,但如果遇到类似菊花图那样的数据,时间复杂度不佳。

100分

模型转换

回顾四十分的方法我们明显可以看出,这是一个最短路模型,其次,在我们走出第一步之后,我们跑了很多重复的东西,这就启发我们,重新构图,并加入一个新的点,再跑最短路求答案。

做法

我们先跑一次最短路,
求出1到其他所有点的最短路,并记为disudisudis_u
并记录这条路径上的第一个点(1不算),记为为prevuprevuprev_u。
然后我们考虑每一条边,构建新图,模拟汇点T,这也正是这道题目精华。

I

当前这条边为(u,1,w)
①如果prevuprevuprev_u不等于u说明存在一条路径,1->prevuprevuprev_u->……u->1,
那么此时我们连一条边(1,T,w+disudisudis_u),为什么?跑最短路的时候快。
②如果prevuprevuprev_u等于u,那么我们不能像上面那样子做(它无法像上面那样返回),但是如果有其他(不一定最短)的路径到达u,那么则连一条边(u,T,w);

II

当前这条边为(1,v,w)
①如果prevv=vprevv=vprev_v=v
此时无需加边,disvdisvdis_v已经取代该边
②说明1到v的最短路径并不是w,这时候我们可以连一条边(1,v,w)。

III

当前这条边为(u,v,w)(u<>1,v<>1)
①如果prevv<>prevuprevv<>prevuprev_vprev_u,
说明存在一条路径1->prevuprevuprev_u->u->v
那么此时我们应该连一条(1,v,disudisudis_u+w)。
②保留这条边
接着我们就可以跑一遍最短路,求出1到T的最短路。

小结

这道题,还是值得细细品味,不要老是只把做题当做做题,慢慢享受其中的乐趣与妙处。

3917 【NOIP2014模拟11.2A组】福慧双修 (Standard IO)题解相关推荐

  1. jzoj2702. 探险jzoj3917. 【NOIP2014模拟11.2A组】福慧双修

    Description 探险家小T好高兴!X国要举办一次溶洞探险比赛,获奖者将得到丰厚奖品哦!小T虽然对奖品不感兴趣,但是这个大振名声的机会当然不能错过! 比赛即将开始,工作人员说明了这次比赛的规则: ...

  2. 【NOIP2014模拟11.2A组】福慧双修

    题意 给定一个图,要我们从1号点出发,经过一系列点后重新回到1点,求出最短距离是多少,限制是每条边只能通过一次. 分析 对于这种求最短路径的题,我们一开始当然是想到SPFA,DIJ等一些列的求最短路算 ...

  3. 【NOIP2014模拟11.2B组】超氧化钾

    非常sb的一道题~比赛切掉的我~ Description 作为一个化学小考只有77分的同学,小W感觉很有压力,所以他决定搞化学.今天他开始研究超氧化钾,这是一种很神奇的离子化合物,在高温下空间结构是立 ...

  4. 【NOIP2014模拟11.1B组】吴传之火烧连营(tree)

    题目大意 对于一个序列,多次询问求在 xor K 的情况下最大值. 分析 我们将每一个数拆分成 2 进制,然后映射进一棵 trie 中,然后对于每个询问,根据异或的性质(1 xor 1=0,1 xor ...

  5. 【NOIP2014模拟11.1B组】吴传之火烧连营

    trie,动态开点. 我们可以将输入的a[],b[]全部看成二进制数. 然后按照二进制中的位置从大到小开始建trie. 如果trie不会的可以自己手动普及一下. 建好a[]的trie后,我们可以对于每 ...

  6. 3914. 【NOIP2014模拟11.2B组】人品问题

    Description 网上出现了一种高科技产品--人品测试器.只要你把你的真实姓名输入进去,系统将自动输出你的人品指数.yzx不相信自己的人品为0.经过了许多研究后,yzx得出了一个更为科学的人品计 ...

  7. JZOJ 3912. 【NOIP2014模拟11.2B组】超氧化钾

    Are you ready? 题目: 题意: 分析: 代码: 题目: 传送门 题意: 给定你xxx.yyy,求按照题目给出的z=xz=xz=x modmodmod 1+x1+x1+x modmodmo ...

  8. 3912. 【NOIP2014模拟11.2B组】超氧化钾

    Description 作为一个化学小考只有77分的同学,小W感觉很有压力,所以他决定搞化学.今天他开始研究超氧化钾,这是一种很神奇的离子化合物,在高温下空间结构是立方体,如下图所示.有一天教黄交给了 ...

  9. 【NOIP2014模拟11.2B组】人品问题

    Description 网上出现了一种高科技产品--人品测试器.只要你把你的真实姓名输入进去,系统将自动输出你的人品指数.yzx不相信自己的人品为0.经过了许多研究后,yzx得出了一个更为科学的人品计 ...

最新文章

  1. SQL DEVELOPER 打不开了
  2. 社交媒体分析-恶意内容自动检测相关论文
  3. linux nfs acl 特定ip,技术|RHCSA 系列(七): 使用 ACL(访问控制列表) 和挂载 Samba/NFS 共享...
  4. linux虚拟网络设备之bridge(桥)(三)
  5. 前端学习(2831):小程序事件绑定
  6. 怎么自学python-如何系统地自学 Python?
  7. 读《股票大作手回忆录》
  8. python快速处理excel表格-python 处理 Excel 表格
  9. 基于VB2008的winsocket控件网络编程
  10. 关于华为P10(Android 8.0系统)出现的一个莫名奇妙的ANR
  11. 关于响应式设计的一些概念和技术
  12. 云服务器 ipv6,开通IPv6
  13. 毕设论文格式整理及常见问题解决
  14. 从翻译到产品本地化 Airbnb语言经理的出海建议
  15. CentOS8 yum配置阿里源
  16. xbox win10测试软件,Win10上或可直接运行Xbox游戏
  17. pyqt qtabwidget关闭_QTabwidget新手求教
  18. 【转】以太坊上的分片
  19. 中级经济师财政税收专业高分备考经验分享
  20. mysql查询星期一到星期日的数据

热门文章

  1. Unity脚本子线程修改UI的一种方式
  2. MATLAB: Table example
  3. vue 判断两个时间插件结束时间必选大于开始时间
  4. 2021年山东省安全员C证试题及解析及山东省安全员C证作业考试题库
  5. 天梯练习题(C语言版)
  6. 1135 mysql_Mysql实例mysql中一个普通ERROR 1135 (HY000)错误引发的血案
  7. Android开发经验谈-很少有人会告诉你的Android开发基本常识,经验谈android
  8. 尚硅谷在线教育十三:讲师、课程功能完善
  9. 使用 SLF4J 进行高效的日志记录(@slf4j 注解)
  10. LLVM每日谈之三十一 如何读写LLVM的bitcode