
最短路
文章平均质量分 86
huanghongxun
这个作者很懒,什么都没留下…
展开
-
CodeForces CF 360E Levko and Game 贪心+SPFA
听说是一道贪心题。。已知N个点,M+K条有向边及边权,可能有重边和自环。可以消耗费用修改给定k条边中一些边的边权。第i条边边权修改范围[li,ri]。修改给定K条边的长度使从s1到f比s2到f的时间短。对于边,如果dis(s1,x)的边长修改为l可以使dis(s1,f)更小。如此修改+重跑最短路后若dis(s1,f)对于平局,判断dis(s1,x)发原创 2015-11-15 09:51:58 · 1389 阅读 · 0 评论 -
2017 ACM-ICPC Hua-Lien Regional
A: Smooth Sequences如果一个序列是光滑的仅当相邻元素差的绝对值不超过d。称一个序列是半光滑的仅当修改至多一个元素使得序列变得光滑。给定序列询问是否光滑。题解半光滑的有3种情况,一种是连续两端差均不满足d,这种判断两端点差不超过2d即可,一种是一端的差不满足d,随便改,一种是中间某段不满足d,判断修改左右端点即可。#include <bits/stdc...原创 2018-05-01 17:24:05 · 1173 阅读 · 1 评论 -
UVa 104|Arbitrage|Floyd
原文地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=40题目翻译套汇是对一种货币进行的交易,希望通过发现货币间汇率的细小差别获利。比如,如果1美元可以购买0.7英镑,1英镑可以购买9.5法郎,1法郎可以购买0.16美元。那么1美元通过这样的兑换路径可以原创 2017-09-26 22:50:45 · 345 阅读 · 0 评论 -
Ural 1085|Meeting|Floyd|最短路径
题目K个好朋友要庆祝他们在程序设计大赛夺得第一名。但是电车票却涨价了,他们住在城市的不同地方,他们需要选择一个电车站作为集合地点,又希望坐电车花的钱尽量少。你需要设计一个程序帮助他们选择集合地点。 城市里面有M个电车运行路线(他们只会坐电车,因为太远了)。每条路线经过的站点都已知。对于每个人我们知道他有多少钱、他是否有月卡(也就是坐电车不花钱)。一张电车票要4卢布(一张票整条电车运行路线通行,也就原创 2017-10-06 17:46:50 · 350 阅读 · 0 评论 -
CodeForces #179(295A|295B|295C)|动态规划|最短路径|前缀和
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I原创 2016-11-13 23:57:23 · 507 阅读 · 0 评论 -
BZOJ 1415|NOI 2005|聪聪和可可|概率期望|动态规划
由于聪聪总会向可可靠近,而且移动是固定的,因此考虑预处理出所有情况下聪聪的移动方向e[i,j]。 这个可以通过枚举可可跑SPFA解决。 由于聪聪和可可的位置即可描述当前状态,因此设dp[i,j] 当e[i][j]=j或e[e[i][j]][j]=je[i][j] = j或e[e[i][j]][j]=j时,聪聪可以一步到位吃掉可可,显然此时dp[i,j]=1dp[i,j]=1。 否则可可有1|原创 2016-04-20 20:31:43 · 445 阅读 · 0 评论 -
机房水题欢乐赛 2016-04-21 上午 图论
水炸了。。Asteroids【题目描述】N*N的方阵中有k个怪兽,每开一枪可以杀死一行或者一列中的所有怪兽。至少要开多少枪。【输入描述】第一行n,k 接下来k行,每一行一个坐标,表示对应的位置有怪兽【输出描述】一行为答案【输入样例】3 4 1 1 1 3 2 2 3 2【输出样例】2【样例解释】输入如下 X.X .X. .X. X表示怪兽所在位置【数据约定】100%数据:N<原创 2016-04-23 11:50:18 · 424 阅读 · 0 评论 -
BZOJ 3931 CQOI 2015 网络吞吐量 最大流 最短路
有点迷的题目。。。。#include <cstring>#include <cstdio>#include <algorithm>#include <queue>using namespace std;#define ms(i,j) memset(i,j,sizeof(i))#define FOR(i,j,k) for(i=j;i<=k;++i)const int N = 3000,原创 2016-04-06 23:52:41 · 641 阅读 · 0 评论 -
POJ 3164 Command Network 最小树形图
#include #include int u[M], v[M], x[M], y[M];double w[M];double edmonds(int rt, int n, int m) { int i, a, b; double ans = 0; while (1) { memset(in, 127, sizeof in); FOR原创 2016-03-06 23:07:38 · 456 阅读 · 0 评论 -
POJ 3635 Full Tank? 最短路DP
给出一个图(1≤n≤1000,0≤m≤100001\leq n\leq 1000,0\leq m\leq 10000),每个点有加油站费用cic_i,对于每个询问,油箱容积cc的车从ss到ee的最小费用。如果这个图是个DAG的话很显然我们可以直接使用动态规划求解。 但它现在不是DAG,回忆起有篇论文是讲SPFA的应用的,不过没负边,用Dij+Heap即可求有环的动态规划。#include <cst原创 2016-03-03 13:35:23 · 1494 阅读 · 1 评论 -
POJ 2449 Remmarguts' Date K短路
求图中第k短路长度。毕竟要求k短路,因此前k短路得暴出来。。 一个k短路显然可以被分成一段非最短路和一段最短路。 (非最短路放在前面的目的是更加匹配搜索) 那么最短路显然就是非最短路长度为0的路。 而求出一个k短路显然就是从最短路开始,不断调整前面的非最短路,使其变成k短路,也就是说,调整的过程就是使前面的非最短路变长的过程,具体的方法显然,对于非最短路和最短路的分界点,只要调整其出边,这条原创 2016-03-04 09:52:27 · 521 阅读 · 0 评论 -
POJ 3613 Cow Relays 倍增Floyd
求[S,T]间长度为k的最短路长度。 考虑Floyd算法。发现Floyd每枚举一个中间点,最短路长度就可能翻倍。 利用这个性质,使用类似矩阵乘法的方式计算即可。#include <cstdio>#include <algorithm>using namespace std;#define FOR(i,j,k) for(i=j;i<=k;i++)int num[1005],size=0;i原创 2016-03-03 17:41:22 · 769 阅读 · 0 评论 -
POJ 3463 Sightseeing 次短路
求最短路和次短路(如果长度刚好比最短路多1)条数和。 嗯。。Dij写成dp。。#include <cstdio>#include <cstring>#include <queue>#define FOR(i,j,k) for(i=j;i<=k;i++)using namespace std;const int N = 100001, M = 100001;int h[N], p[M],原创 2016-03-03 17:33:21 · 482 阅读 · 0 评论 -
POJ 3013 Big Christmas Tree 最短路
求图上根为1的生成树使得各边权*子树点权和最小。 ans=∑(u,v)wu,v×sumvans=\sum_{(u,v)} w_{u,v}\times sum_v 光看这个式子并没有卵用。专门迷惑人的233。 考虑每个点对答案的贡献,即该点的点权*其祖先边权和。 即上式等价于 ans=∑ufu×dis1,uans=\sum_{u} f_u\times dis_{1,u} 要使总答案最小,即原创 2016-03-03 16:55:09 · 776 阅读 · 0 评论 -
POJ 3621 Sightseeing Cows 01分数规划
找出一个环使得其点权和比边权和最大。 即 max∑vi∑ei\max \frac{\sum v_i}{\sum e_i} 既然是分数规划,令答案为a,有 a≥∑vi∑eia\geq \frac{\sum v_i}{\sum e_i} 变形 a×∑ei≥∑via\times \sum e_i\geq \sum v_i ∑(a×ei−vi)≥0\sum(a\times e_i-v_i)\g原创 2016-03-03 16:14:30 · 494 阅读 · 0 评论 -
BZOJ 3891 USACO 2014 Dec Piggy Back 搜索 最短路
第一个人从1出发边权A,第二个人从2出发边权B,走到一起边权C,求最短方案使两人走到n。分别从1,2,n跑一次最短路,然后枚举走到一起的点计算答案即可。没开快速读入 104ms,开快速读入84ms,第二页和第一页的区别,然而很小。。#include #include #include const int N = 40001, M = 80001;using namespace原创 2016-01-31 17:01:19 · 396 阅读 · 0 评论 -
CodeForces 507E Breaking Good 最短路
给出N点M边的图,求出最短路并使最短路上z=0的边数+不在最短路上z=1的边数最小并输出方案。Ans=最短路上z=0的边数+不在最短路上z=1的边数=最短路长-最短路上z=1的边数+总z=1边数-最短路上z=1的边数即最短路上z=1的边数最大时答案最小。跑一次SPFA,并使最短路上z=1的边数最大。方案输出很简单了。。强行map。#include using namespace原创 2015-12-08 22:35:10 · 458 阅读 · 0 评论 -
Ural Championship 2010
B: Transsib题目大意现在有一个线性规划:maxz=x1+x2+x3+x4s.t.{x1+x4≤k1x1+x3≤k2x3+x4≤k3x2+x3≤k4x2+x4≤k5x1+x2≤k6\max z=x_1+x_2+x_3+x_4\\s.t.\begin{cases}x_1+x_4\leq k_1 \\x_1+x_3\leq k_2 \\x_3+x_4\leq k_3 \\...原创 2018-10-22 01:57:19 · 322 阅读 · 0 评论