一道挺有意思的题目探究——不稳定的道路
题目简述:
给你一个无向图,n个点,m条边,每条边有两个权值,c和d
通过一条边的时间为 c+d/(t+1) t为当前时刻(后半部分向下取整)
可以在任意一个点停留任意时间
询问1到n的最短路
对于一条边的通过时间而言,与开始时间 t 构成一个对勾函数,即单峰函数
向下取整会有平台。对勾函数的底就是sqrt(d)。
解法主要有两种,
一是跑最短路,每个点松弛的时候判断当前时间是否到达sqrt(d),没到达一定要等
二是在中间过程的时候实数域上三分
其实上面的东西都很平凡,签到题而已
重点是下面
我当时问了一个问题
“我把所有等的时间都在起点等了,然后再跑,是更优还是更劣还是本质一样?”
然后事情就开始离谱了
有人认为会更劣
从函数角度分析中间取值会更劣
有人认为等价不变
从dij的贪心角度分析全局运作不会改变
有人认为更优
尤其是sandom,他认为:显然更优
还有说不一定的
就略显离谱
反正在我的视角里最后也没有讨论出来
或者说没有人能给出一个严谨的证明或给出一个反例
后来大家也就可能都把这事忘了
或者说自己大概想了想认为能理解过去自己的想法就没有在意
但我是一直对这个问题的严谨答案挺有兴趣
因为我听了四波人给我四种不同答案的感性证明
所以我的思维是混乱的,要我自己给个证明完全不可能
那么我的思路很简单(暴力)
(其实严格意义上讲是kaguya给的思路
不过这个思路其实也不是很难想,就是跑出来记录中间点再用另一种方式再跑比较经过点
所以没必要区分这么严谨
我之所以要提这么一句是因为今天T4我赛时思路跟他一模一样,也是拍成链处理区间交,真就是一模一样
包括后面线段树里开线段树的预设性处理也想到了
然后他那个hash(随机赋权)的转化简直tmd帅炸了,我tm真是服了
我考场写完T1和T4的100分暴力之后
整整三个小时一直在想怎么处理T4的区间交,一直在想一些数据结构嵌套
他讲题的时候说出hash的时候,我一下就坐直了,我真的,那种感觉,你懂吧,真tmd是妙
考试这个题不恍惚三个小时区间交是无法理解他这个思路有多神的)
好像扯远了
先用正解跑出答案
记录在每个点的停留时间
再把这些时间都给到起点
再从起点开始跑,看两次经过的点和最后时间是否一样
2023.2.18填坑:
去年11月的博客了,当时写的代码也没存,也懒得再搞一次了
最后是跑出来了,但是结论我忘了,总之在起点把时间全给确实是有问题
但是它那个问题我依稀记得不是通俗说法,好像是一种很诡异而奇妙的方式错了
放两张对拍截图得了