随笔分类 -  最短路

摘要:分析 https://www.cnblogs.com/onioncyc/p/8037056.html 写的好像有点问题 但是大致就是这个意思 代码很好理解 代码 #include<bits/stdc++.h> using namespace std; #define bt bitset<160> c 阅读全文
posted @ 2019-11-08 15:02 水题收割者 阅读(184) 评论(0) 推荐(0)
摘要:分析 预处理每个点的前根号小的距离 对于每次询问删除点小于根号则已经处理好 否则直接暴力dp即可 代码 阅读全文
posted @ 2019-09-30 11:08 水题收割者 阅读(158) 评论(0) 推荐(0)
摘要:分析 代码 阅读全文
posted @ 2019-09-30 10:20 水题收割者 阅读(217) 评论(0) 推荐(0)
摘要:分析 代码 阅读全文
posted @ 2019-09-30 10:12 水题收割者 阅读(181) 评论(0) 推荐(0)
摘要:分析 先求出每个点到终点的最短路 我们按照海拔从大到小排序 然后求出kruskal重构树 每次答案就是一个可行子树中的最短路的最小值 代码 阅读全文
posted @ 2019-09-19 10:00 水题收割者 阅读(185) 评论(0) 推荐(0)
摘要:分析 我们可以先跑一遍全价的最短路 之后我们枚举这个第k大的价格w[i] 将其它边减这个边的权值和0取max 在跑出最短路之后加上减去的费用,即w[i]*k 我们发现如果价值大于w[i]的边小于k个 那么由于小于w[i]的边经过之前操作后权值会比原先大所以一定不有 所以我们不难得出一定是这个点正好是 阅读全文
posted @ 2019-09-14 21:56 水题收割者 阅读(99) 评论(0) 推荐(0)
摘要:题目大意 给你一个有向图和一个路径 让你在给定路径中选出尽量少的点使得新路径的最短路长度和原路径相等 给定路径相邻两点间距离为1 分析 先floyd求出两点间最短路 之后每次对于点i找到所有跟它的最短路距离=在序列上建个距离的点j 将dp[i]转移到dp[j]即可 代码 阅读全文
posted @ 2019-08-26 21:35 水题收割者 阅读(299) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-08-20 17:18 水题收割者 阅读(1) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-08-18 21:11 水题收割者 阅读(1) 评论(0) 推荐(0)
摘要:传送门 分析 我们发现对于一个怪物要不然用魔法代价使其无需考虑后续点要么用普通攻击使其转移到他所连的所有点上且所有边大于0 所以我们可以先将一个点的最优代价设为魔法攻击的代价 之后我们倒着跑spfa求出最短路即可 代码 阅读全文
posted @ 2019-04-16 19:20 水题收割者 阅读(182) 评论(0) 推荐(0)
摘要:传送门 分析 我们可以建一个k层图,把dp转移的三维对应到每个点上,每个第k层点连向0层点 我们让第0层点为实点其余为虚点,只要碰到虚点就dfs到他连得所有实点再将实点入队即可 代码 阅读全文
posted @ 2019-03-25 10:06 水题收割者 阅读(187) 评论(0) 推荐(0)
摘要:传送门 分析 我们不难想到所有点的海拔要么是0要么是1 所以跑最小割即可 但是时间复杂度不行 于是转化为对偶图的最短路 代码 阅读全文
posted @ 2019-02-07 13:19 水题收割者 阅读(174) 评论(0) 推荐(0)
摘要:传送门 题目大意 给出一个图,一些边带权,另一些边等待你赋权(最小赋为1).请你找到一种赋权方式,使得 s 到 t 的最短路为 L n ≤ 1e3 ,m ≤ 1e4 ,L ≤ 1e9 分析 二分所有边的边权和 使得二分后第p条边权值为k,1~p-1条边权值为inf,剩余边权值为1 对于每种情况跑一次 阅读全文
posted @ 2019-02-04 14:34 水题收割者 阅读(254) 评论(0) 推荐(0)
摘要:传送门 分析 设dp[i]为进行i轮的最小值 所以不难得出dp[i]=Min(dp[i],dp[j-1]+(i-j+1)*dij(j,i)+k) dij(L,R)表示在[L,R]这几天的最小值 处理这几天哪些点不能走然后求最短路即可 注意dp[0]=-k 代码 阅读全文
posted @ 2018-11-17 20:22 水题收割者 阅读(158) 评论(0) 推荐(0)
摘要:传送门 分析 就是飞飞侠这道题...... 我们可以将这张图建成好几层,每一层可以向下一层的上下左右无代价移动,而对于每个点如果付b[i][j]的代价就可以走到比它高a[i][j]的层上。我们用这种方式优化了建边,然后跑个最短路就行了。 代码 阅读全文
posted @ 2018-09-25 15:47 水题收割者 阅读(237) 评论(0) 推荐(0)
摘要:传送门 分析 我们设pre[i]为到第i个时段的雇佣员工的总数量,sum[i]表示时段i的可雇佣员工的总数量,r[i]表示时段i所需工人的数量。由此我们不难求出: 0<=pre[i]-pre[i-1]<=sum[i] pre[i]-pre[i-8]>=r[i],i∈[8,24] pre[i-8+24 阅读全文
posted @ 2018-08-22 19:01 水题收割者 阅读(314) 评论(1) 推荐(0)
摘要:传送门 分析 我们知道对于一个不等式a<b可以将其转化为a+1<=b的形式,在知道这个之后我们便可以将5个关系进行差分约束了,具体的建边方式见代码。注意由于每个人都必须有糖,我们把每个人的初值都赋为1并全部入队。 代码 阅读全文
posted @ 2018-08-22 10:36 水题收割者 阅读(154) 评论(0) 推荐(0)
摘要:传送门 分析 我们发现这两类关系可以写成b-a<=L和b-a>=D两种形式,所以我们可以得到这两种的连边策略分别是a向b连一条权值为L的边和b向a连一条权值为-D的边。然后我们跑最短路即可。注意要单独判一下负环。 代码 阅读全文
posted @ 2018-08-21 22:02 水题收割者 阅读(180) 评论(0) 推荐(0)
摘要:传送门 分析 我们设S[i]表示到第i个数为止一共有多少个数在集合Z之中,最终答案就是S[max]-S[min]的最小值。所以我们不难发现对于每一个[ai,bi]都表示S[bi]-S[ai-1]>=ci,而我们又知道0<=S[i]-S[i-1]<=1,所以建图策略便是每一个ai向bi连一条权值为ci 阅读全文
posted @ 2018-08-21 19:33 水题收割者 阅读(119) 评论(0) 推荐(0)
摘要:传送门 题目大意 有编号1~n的星球,在不用的星球间共有m个传送门,任意两个星球间传送门不超过1个,每个传送门需要花费一定的时间,但是在某时刻会在某星球有旅客到达,这时要一定等到没有旅客到达的时候才能出发,问从1走到n最少花费时间是多少。 分析 首先我们先考虑一个贪心策略,如果到达点i的时间有a和b 阅读全文
posted @ 2018-08-08 17:44 水题收割者 阅读(166) 评论(0) 推荐(0)