最优贸易(spfa和tarjan+拓扑排序+dp)
最优贸易
题目链接
大致题意:
n个点m条边,每个点有一个权值代表在这个点买或者卖水晶球的价格
有一个人从1走到n问你能够赚的最多的差价是多少(只能买卖一次)
解题思路:
这道题有很多写法,这里提供两种:spfa和tarjan+拓扑排序+dp
第一种方法:跑两遍spfa
以i点进行讨论,我们需要知道从1到i点买水晶球的最小值以及从i到n卖水晶球的最大值,两者相减极为答案
所以我们要跑两遍spfa,第一遍正向跑,用dis表示从1到i的最小值,第二遍反向跑,用d表示从n到i的最大值,答案为d[i]-dis[i
原创
2021-07-03 22:57:09 ·
327 阅读 ·
1 评论