POJ3268-Silver Cow Party

GerJCS岛 / 2024-10-14 / 原文

继续刷邝斌带你飞专题

垃圾POJ不出意外的话依旧是挂

洛谷YYDS 要不是看了眼 标签USACO2007 差点就错过这个题了,第一次遇到题目名字不一样的

那个可用平台也是YYDS但是这题没有

 

10^3个点,10^5条路,每条路最大10^2,弗洛伊德的每次插点的方法显然10^9超时

有了上个题的基础(我发现邝斌的专题真牛逼,阶梯型太好了,之前搜索的记录状态也是),感觉挺容易的

题目的样例图解看都没看,怕先看图后形成定势思维,自己不会画图了,影响我找bug

简单划了划了,就是搞两遍,先从要去的点(x)出发,跑一遍迪杰斯特拉,把它到所有点的最短路径存下来,这时候题意中的回程就有了,再每一个点跑一遍迪杰斯特拉找去程,妈的直接干超时了艹,一次迪杰斯特拉是n^2,这直接(n^2+n^3)

连迪杰斯特拉都超时了,果断看题解

简单扫一眼百度结果列表,居然说是迪杰斯特拉和有向图处理,麻痹的,不能再看了,自己想硬憋吧

再次科普下都有哪些最短路算法,发现有个邻接表+优先队列感觉有用

记得上一个题看别人解法有出现队列的,我还纳闷咋就能直接出队列不用比较的(我看到这些命名很奇怪的各种高科技就很烦,比如上一篇文章出现的 priority_queue<PII> pq; ),其实就是优先队列,展开学下(其实都学过只是学的时候静不下心学的不踏实,全忘了)

查了下什么是优先,什么是堆排序

发现了一个好到让人高潮的良心极品博客,搭配这个介绍堆排序的

迪杰斯特拉for遍历每个点,然后遍历一遍找最大排序,并松弛,这就是n^2,如果能找最大优化,看能不能不至于n^2