摘要: 解题思路:比赛的是没读懂题意,这题求的是起点1到n路径序列数,但是路径序列上的相邻两个点 i, i+1 之间应该满足 i、i+1 到终点的最短路low[i] > low[i+1]。 因此需要先以终点开始,跑一遍dijkstra算法,考虑时间复杂度,使用邻接表加优先队列优化。计算得到最短路 low 数 阅读全文
posted @ 2021-03-08 20:24 ISGuXing 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 解题思路: 1、单调栈:因为是循环数组,因此把数组复制三遍,ans 数组复制为2倍长,维护一个单调非递增的栈,栈保存的元素是元组(a[i] , i ),如果后面的值有比栈顶元素的值大,栈顶元素出栈,更新ans[i]的值为让其出栈的值,最后返回ans数组的一半,即最终答案。 2、线段树:数组复制两遍, 阅读全文
posted @ 2021-03-08 16:29 ISGuXing 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 在刷题的时候,经常碰到需要生成非常大的邻接矩阵,往往我们都是用 list 存储,但是我在最近刷题的过程中就遇上了TLE的情况,原因就是生成邻接矩阵时间太花时间了。 先说结论:[ ]* n 比 [ for i in range(n) ]列表生成式的速度快,差不多快3倍多 尽量使用邻接表代替邻接矩阵。比 阅读全文
posted @ 2021-03-08 15:09 ISGuXing 阅读(290) 评论(0) 推荐(0) 编辑