最短路
ZigZagK
一个蒟蒻。
展开
-
【最短路->DP】SPOJ(ACPC13)[Increasing Shortest Path]题解
题目概述有一张n个点m条边的图,给出Q个询问,每个询问为x,y,c表示求x->y的最小权值,但要满足如下条件: 1.不能走超过c条边。 2.走过的边的权值必须严格递增(保证给出的边的权值没有重复)。解题报告由于我们要满足路径边权递增,所以会想到给所有边按照边权排个序。然后我们依次将边加入图中,这样就可以保证路径边权是递增的。 那么在这个想法的基础上,我们记录f[i][j]表示从起点到达i点走了原创 2017-07-12 16:20:09 · 401 阅读 · 1 评论 -
【线段树优化建图+BFS】BZOJ3073(Pa2011)[Journeys]题解
题目概述有n个点和m条信息,每条信息a,b,c,d表示将[a,b]的每个点和[c,d]的每个点都建边,求从P出发到每个点的最短路。解题报告这道题是区间建图,所以需要用到线段树来优化建图。 ps:其实本来以为线段树优化建图是2-SAT建图的一种优化技巧,然后搜了搜发现线段树优化建图其实适用范围很广……我们先来讲讲线段树优化建图的姿势(实际情况中会有各种变形): 因为是区间之间的建边,所以我们会想到原创 2017-07-20 21:47:43 · 1568 阅读 · 2 评论 -
【背包->最短路】洛谷2662[牛场围栏]题解
题目概述给出n个物品,每个物品都有体积v且有无数个,问最大的不能组成的体积(如果均能组成或最大的不能组成的体积不存在输出-1)。解题报告我们很快就会发现这是背包,但是这道题并没有给出背包上界,所以正常的背包很难处理此问题。 然而实际上有一种套路是:物品无限+物品体积小+背包非常大=最短路! 我们随便取一个物品,假设体积是v。定义f[i]表示模v同余i的最小物品体积,那么只要f[i]存在,f[i]原创 2017-07-09 12:50:46 · 484 阅读 · 2 评论 -
【分治+Floyd】2016计蒜之道复赛A[百度地图的实时路况]题解
题目概述有 nn 个点,定义 d(x,z,y)d(x,z,y) 表示 xx -> yy 不经过 zz 的最短路,如果最短路不存在则 d(x,z,y)=−1d(x,z,y)=-1 。求 ∑nx=1∑ny=1∑nz=1{d(x,z,y)|x≠z,y≠z}\sum_{x=1}^{n}\sum_{y=1}^{n}\sum_{z=1}^{n}\{d(x,z,y)|x\ne z,y\ne z\} 。解题报告暴力原创 2017-07-30 18:41:49 · 772 阅读 · 0 评论 -
【树的直径】ZJOI2012day1[旅游]题解
题目概述给出一个凸n边形(n个节点),有n-2个城市(三角形),这n-2个城市将这个凸n边形三角剖分。求连接两个节点穿过最多的城市数量(只要和城市的边有两个交点就算穿过)。 解题报告相邻两个城市可以直接互通,那么也就可以连一条边,连接完毕之后不会成环,原因可以yy出来,如图: i想要绕回来,就会出现上图的情况:一个点在里面,这是不可能的。那么知道了这一点之后,连边之后的图就是一棵无根树,显原创 2017-02-14 10:14:50 · 676 阅读 · 2 评论 -
【最小割->最短路】BZOJ1001(BeiJing2006)[狼抓兔子]题解
题目概述给出一张网格图,兔子从(1,1)逃向(n,m),有横向道路,纵向道路和对角线道路,每条道路都有一个流量限制(即最多能通过多少兔子),一只狼只能抓一只兔子。问最多在边上放置多少只狼才能完全堵截兔子。 解题报告一道神奇的题目。一眼看去果断最小割(求最大流),然而n和m巨大,足以让你爆炸。所以要另辟蹊径。这道题的最小割肯定是从左或下割到右或上,但是由于这是网格图,割过去肯定会经过题目给出的那些边原创 2017-03-25 21:14:19 · 573 阅读 · 2 评论 -
【分数规划-最大比例环】POJ3621[Sightseeing Cows]题解
题目概述给出 nn 个点, mm 条单向边。每个点有点权 wiw_i ,每条边有边权 tit_i 。求点权比边权最大的环。解题报告在POJ做分数题简直就是作死,可以WA到飞起来,还是分数规划裸题(搞事啊,为什裸题我现在才做过啊),二分枚举答案 midmid ,然后用新边权 wx−mid×t(x,y)w_x-mid\times t(x,y) 建边。只要存在一个环的边权和大于等于 00 ,就说明验证成功原创 2017-10-29 12:57:45 · 725 阅读 · 0 评论 -
【Dijkstra+贪心】BZOJ1922(Sdoi2010)[大陆争霸]题解
题目概述有 nn 个点 mm 条有向边,一个点要被摧毁需要先摧毁其他的一些点,求从 11 开始,摧毁 nn 的最短时间。解题报告刚开始以为是拓扑,之后发现显然不是,因为一个点没被摧毁之前是不能访问的。所以SPFA也不能用了,只剩下Dijkstra。记录 dis[0][i]dis[0][i] 表示到 ii 点的最短时间, dis[1][i]dis[1][i] 表示 ii 可以被摧毁的最短时间。那么一个原创 2017-12-14 19:34:00 · 345 阅读 · 0 评论