最短路
文章平均质量分 64
Sarlendy
I'm an OIer.
展开
-
Luogu P2910 寻宝之路
题目Luogu P2910 寻宝之路胡乱分析对于航行序列,跑从每个起点开始到达相应终点的最短路,然后累加得到结果。试着用dijkstra实现,结果70分。70分代码#include<cstdio>#include<queue>#include<cstring>#include<iostream>using namespace std;const int maxn=1002,inf=2147原创 2017-12-03 11:23:46 · 404 阅读 · 0 评论 -
Luogu P3905 道路重建
题目Luogu P3905 道路重建分析使得修复总长度为最小,即使得两点之间路径为最短。因为AB两点现在没有被连接,所以只要修复最短路径上需要修复的路,即可联通,并且答案最小(这是显然的)。 假定全部道路通畅,跑一遍A到B的最短路,然后将被毁坏的道路边权设为0,再跑一遍最短路。两次所得的B的最短路之差,就是最短路径上需要修复的路的长度。路径上某些边的权变成0后,再得的最短路只会变得更短或者不变(这原创 2017-11-30 19:56:40 · 620 阅读 · 0 评论 -
Luogu P1629 邮递员送信
题目Luogu P1629 邮递员送信分析浏览一遍题目,很容易分析出是最短路模型。首先跑一次1号店到其他点的最短路,然后在他返回时从每一个点都跑一次最短路,但在返回过程中我们只利用每个点到1号点的最短路,却要跑(n-1)次,所以显然十分浪费。并且复杂度是O(n*m log n),爆炸。 如何解决这个问题呢? 如果我们把每条边的方向反过来,那么原来每个点到1的最短路就变成了1到每个点的最短路,相当原创 2017-12-13 21:55:11 · 361 阅读 · 0 评论 -
[SCOI2009]最长距离
题目BZOJ 1295: [SCOI2009]最长距离分析本来以为是一道DP,想了很久都想不到咋做。于是考虑最短路,发现一些操作。 将有障碍的格子的权值标为1,没有障碍为0; 对于一个起点,跑一遍最长路,寻找dis[i][j]≤tdis[i][j]≤tdis[i][j]≤t的最大长度的(i,j); 格子(i,j)即为距离起点的最远点,求出欧几里得距离; 枚举所有的格子作为起...原创 2018-05-17 19:52:27 · 301 阅读 · 0 评论 -
[NOI2007]社交网络
题目BZOJ1491 [NOI2007]社交网络分析看到数据规模,最先想到的是Floyd,但在统计方案的地方卡住了。浏览了几篇题解,得到了一点启示。 在floyd过程中,枚举k为中转点:如果当前需要更新,那么经过k的最短路条数附初始值为两边(i-k和k-j)的条数之积(乘法原理);如果恰巧当前就是一条最短路,那么此点最短路数加上这一(i,j)的最短路数(乘法原理,类似地)。 可...原创 2018-05-15 21:23:14 · 295 阅读 · 0 评论 -
POJ3013 Big Christmas Tree
题目POJ3013 Big Christmas Tree分析题目大意:给定一个计算公式:某条边的边权=其所有子节点的点权和××\times原始边权,以此生成一棵树,求最小边权和。思路:首先描述一下表达式:ans=∑(u,v)subsum[v]⋅cost(u,v)ans=∑(u,v)subsum[v]⋅cost(u,v)ans=\sum_{(u,v)}{subsum[v]...原创 2018-05-24 19:43:58 · 181 阅读 · 0 评论 -
[JLOI2011]飞行路线
题目BZOJ 2763: [JLOI2011]飞行路线分析图上DP。 应当注意,最小花费的航线并不一定是在最短路径上免费尽量多的边而得到的。 为什么呢?设想如果有一条路径,由不多于k条边组成,那么可以通过免费掉所有的边而获得0元的费用;如果恰好此图的最短路有多于k条边组成,那么无论如何也不能免费到0元。 因此,应采用DP:设f[i][j]表示更新到i节点,当前免费了j次的最小...原创 2018-05-31 18:36:27 · 387 阅读 · 0 评论