一道挺有意思的题目探究——不稳定的道路

题目简述:

给你一个无向图,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月的博客了,当时写的代码也没存,也懒得再搞一次了

最后是跑出来了,但是结论我忘了,总之在起点把时间全给确实是有问题

但是它那个问题我依稀记得不是通俗说法,好像是一种很诡异而奇妙的方式错了

放两张对拍截图得了

 

posted @ 2023-02-18 21:04  SMTwy  阅读(52)  评论(3编辑  收藏  举报