图论 - 最短路
Crossing over
这个作者很懒,什么都没留下…
展开
-
HDU 1598 find the most comfortable road
传送门这题不会,记住写法就行了,好像都是这么写的? 第一次从最小边开始往上添,第二次从第二小边开始。。。每次添边直到那俩点连通,每次记录该次的极差并更新最优值。 可得到的结论是,第i+1次添的最后一条边肯定不会比第i次添的最后一条边权值还小。#include <iostream>#include <algorithm>#include <vector>#include <cstring>原创 2017-04-08 21:46:24 · 235 阅读 · 0 评论 -
关于二分限制最短路的题的总结
下面几道题分为两类:最小找最大(还加了一些限制):HDU 2962,HDU 1839最大找最小:CCF CSP 201703 4.地铁修建路上的边权极值相差最小:HDU 1598路上的点权极值相差最小:HDU 2363这几道题都可以用二分限制最短路来求解,但不是都能用并查集来求解。需要输出最短路值(限制情况下),或者对最短路值有个上界,或者有向图,这些情况就都不能用并查集了。(使用并...原创 2019-04-12 21:06:25 · 236 阅读 · 0 评论 -
PAT A1030 Travel Plan(30)
题意:还是dijkstra最短路径题,路的边权分两个,dist和cost,第一标尺是dist最小,第二标尺是cost最小,此时唯一。注意:这道题还要输出路径,所以为每个点记录前驱,最后来一个递归输出。#include <iostream>#include <algorithm>#include <climits>using namespace std;const int Nmax = 50原创 2017-02-10 19:01:40 · 397 阅读 · 0 评论 -
PAT A1087 All Roads Lead to Rome(30)
题意N个城市,给定起点终点,除起点外每个城市有一个点权,第一标尺,边权和最小(最短路径),第二标尺,点权和最大,第三标尺,平均点权和最大(不算起点)。同时还要输出第一标尺对应的路径数量和最后唯一的路径。注意第三标尺可以转化为结点数量最小。dijkstra更新路径里面要把这些逻辑都写上。城市名是个字符串,用map<string,int>就可以处理。#include <iostream>#in原创 2017-02-10 20:20:34 · 452 阅读 · 0 评论 -
PAT A1072 Gas Station(30)
题意这个题读起来有点烦,是这样的,首先有N个居民房和M个加油站,每个加油站都对应着一个最小距离和平均距离,加油站的最小距离是指从他到其他所有居民房的最短路径的最小值(从N条最短路径里面选),现在让你选择一个加油站,首先他到所有居民房的最短路径均不能大于服务范围(每个加油站一样),其次他的最小距离在所有加油站的最小距离中最大(从M个加油站中选),若不唯一,选择平均距离最小的,若再不唯一,选择编号最小的原创 2017-02-10 19:49:57 · 440 阅读 · 0 评论 -
PAT A1018 Public Bike Management(30)
题意N个车站和一个管理中心,给定终点,选取管理中心到终点的最短路径,若有多条最短路径,要根据一些奇怪的标准从中选取一条唯一的最短路径(首先最小take其次最小return)。注意这道题肯定先要用dijkstra,然后问题来了,take和return值不满足传递性!这就是说,给定终点 x 和到该点的最优路径 0~x(最短路径里按照标准选取的唯一),其子问题 (终点为 0~x 中间某点 y) 的最优路原创 2017-02-10 22:03:14 · 296 阅读 · 0 评论 -
PAT A1003 Emergency(25)
题意给定图(城市,路),给定边权(路程),点权(救援队数目),求两点间最短路条数(边权和最小),并求其中点权和的最大值。注意fill函数初始化二维数组的写法和陷阱。Dijkstra算法的扩展 在&amp;lt;和==处理上,注意最短路数目在==情况下可直接加。为每个点设两个数组,分别用于保存起点到该点的最短路数目和点权和。边权和最小值与点权和最大值在路径上可传递,满足最优性原理。证明:设r为s到t原创 2017-02-11 01:16:30 · 314 阅读 · 0 评论