3917 【NOIP2014模拟11.2A组】福慧双修 (Standard IO)题解
目录
- 目录
- 原题
- 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)题解相关推荐
- jzoj2702. 探险jzoj3917. 【NOIP2014模拟11.2A组】福慧双修
Description 探险家小T好高兴!X国要举办一次溶洞探险比赛,获奖者将得到丰厚奖品哦!小T虽然对奖品不感兴趣,但是这个大振名声的机会当然不能错过! 比赛即将开始,工作人员说明了这次比赛的规则: ...
- 【NOIP2014模拟11.2A组】福慧双修
题意 给定一个图,要我们从1号点出发,经过一系列点后重新回到1点,求出最短距离是多少,限制是每条边只能通过一次. 分析 对于这种求最短路径的题,我们一开始当然是想到SPFA,DIJ等一些列的求最短路算 ...
- 【NOIP2014模拟11.2B组】超氧化钾
非常sb的一道题~比赛切掉的我~ Description 作为一个化学小考只有77分的同学,小W感觉很有压力,所以他决定搞化学.今天他开始研究超氧化钾,这是一种很神奇的离子化合物,在高温下空间结构是立 ...
- 【NOIP2014模拟11.1B组】吴传之火烧连营(tree)
题目大意 对于一个序列,多次询问求在 xor K 的情况下最大值. 分析 我们将每一个数拆分成 2 进制,然后映射进一棵 trie 中,然后对于每个询问,根据异或的性质(1 xor 1=0,1 xor ...
- 【NOIP2014模拟11.1B组】吴传之火烧连营
trie,动态开点. 我们可以将输入的a[],b[]全部看成二进制数. 然后按照二进制中的位置从大到小开始建trie. 如果trie不会的可以自己手动普及一下. 建好a[]的trie后,我们可以对于每 ...
- 3914. 【NOIP2014模拟11.2B组】人品问题
Description 网上出现了一种高科技产品--人品测试器.只要你把你的真实姓名输入进去,系统将自动输出你的人品指数.yzx不相信自己的人品为0.经过了许多研究后,yzx得出了一个更为科学的人品计 ...
- JZOJ 3912. 【NOIP2014模拟11.2B组】超氧化钾
Are you ready? 题目: 题意: 分析: 代码: 题目: 传送门 题意: 给定你xxx.yyy,求按照题目给出的z=xz=xz=x modmodmod 1+x1+x1+x modmodmo ...
- 3912. 【NOIP2014模拟11.2B组】超氧化钾
Description 作为一个化学小考只有77分的同学,小W感觉很有压力,所以他决定搞化学.今天他开始研究超氧化钾,这是一种很神奇的离子化合物,在高温下空间结构是立方体,如下图所示.有一天教黄交给了 ...
- 【NOIP2014模拟11.2B组】人品问题
Description 网上出现了一种高科技产品--人品测试器.只要你把你的真实姓名输入进去,系统将自动输出你的人品指数.yzx不相信自己的人品为0.经过了许多研究后,yzx得出了一个更为科学的人品计 ...
最新文章
- SQL DEVELOPER 打不开了
- 社交媒体分析-恶意内容自动检测相关论文
- linux nfs acl 特定ip,技术|RHCSA 系列(七): 使用 ACL(访问控制列表) 和挂载 Samba/NFS 共享...
- linux虚拟网络设备之bridge(桥)(三)
- 前端学习(2831):小程序事件绑定
- 怎么自学python-如何系统地自学 Python?
- 读《股票大作手回忆录》
- python快速处理excel表格-python 处理 Excel 表格
- 基于VB2008的winsocket控件网络编程
- 关于华为P10(Android 8.0系统)出现的一个莫名奇妙的ANR
- 关于响应式设计的一些概念和技术
- 云服务器 ipv6,开通IPv6
- 毕设论文格式整理及常见问题解决
- 从翻译到产品本地化 Airbnb语言经理的出海建议
- CentOS8 yum配置阿里源
- xbox win10测试软件,Win10上或可直接运行Xbox游戏
- pyqt qtabwidget关闭_QTabwidget新手求教
- 【转】以太坊上的分片
- 中级经济师财政税收专业高分备考经验分享
- mysql查询星期一到星期日的数据
热门文章
- Unity脚本子线程修改UI的一种方式
- MATLAB: Table example
- vue 判断两个时间插件结束时间必选大于开始时间
- 2021年山东省安全员C证试题及解析及山东省安全员C证作业考试题库
- 天梯练习题(C语言版)
- 1135 mysql_Mysql实例mysql中一个普通ERROR 1135 (HY000)错误引发的血案
- Android开发经验谈-很少有人会告诉你的Android开发基本常识,经验谈android
- 尚硅谷在线教育十三:讲师、课程功能完善
- 使用 SLF4J 进行高效的日志记录(@slf4j 注解)
- LLVM每日谈之三十一 如何读写LLVM的bitcode