最短路
小菜鸡加油
菜鸡
什么都能折磨
展开
-
P5905 【模板】Johnson 全源最短路
需要注意的是在bellman-ford跑完后要把原来存好的边权给改一下,最后算最终的时候给减回来。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#include<cstdio>#include<algorithm>#原创 2021-11-13 16:04:10 · 252 阅读 · 0 评论 -
hdu3247 Resource Archiver(AC自动机上bfs预处理+dfs/状压dp解tsp问题)
http://acm.hdu.edu.cn/showproblem.php?pid=3247把所有的串挂到自动机上去,这样就能在自动机上跑最短路由于最短路长度为1所以改成bfs标记病毒串不能bfs经过这样就变成10个串,预处理出根到每个串结尾的距离,就是先构造出哪个串然后再从这个串开始跑其他串,只要状态把全部串都跑到即可(类似tsp,不过tsp最后要回来再花代价)由于给了10sdfs也能接受就暴力跑了2s过(发现自己的自动机之前的没有trie图却过了hdu板子题,甚至这道题我对拍了网上其他原创 2021-11-09 21:42:28 · 185 阅读 · 0 评论 -
[JSOI2015]地铁线路(虚拟源+最短路图+dp)
https://www.luogu.com.cn/problem/P6096思路:好题。开始先考虑最小代价的计算。如果不考虑时间,我们可以对每个点建完全图。然而空间和时间都不够。虚拟源。开始不考虑第二问的话,可以建如下图的虚拟源绿色的要付1r,黄色不要钱。理解为上了车这一站付一次就好,一旦下车就要重新付。如此我们跑一个dijkstra,便可解决第一问。图源:https://ac.nowcoder.com/profile/919101813l好,那么第二问如何解决。首先考虑原创 2021-05-13 19:27:56 · 339 阅读 · 2 评论 -
G. To Go Or Not To Go?(最短路)
https://codeforces.com/contest/1520/problem/G思路:答案要不不用传送门。如果用肯定只用两个就好了。因为多用还不如直接传到要传的那个门。所以n^2枚举的时候确定一下最小代价的两个门。然后取合并之后取最小#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#includ原创 2021-05-07 12:08:40 · 561 阅读 · 0 评论 -
L3-028 森森旅游 (30 分)
还没题单把..怪无语的这题。我开始把更新最值写反了。没想到还给过了样例,交上去就1分。然后就gg了。可能很多人没整体思路?先暴力吧。有26分?枚举中间的换钱点,对于前面纸币的,跑一个最短路。对于后面的旅游币,跑一个最短路。这时候有一个最值答案。但是维护的话单纯看是否有一个比当前值更小是不对的。因为如果一开始total存的就是最小值,假如说是第x个,然后现在把x的汇率改小了,那么你就要花更多的钱。此时答案是未知的。于是这里可以暴力阿..我真是麻了以后就该cccc先给暴力过去的。原创 2021-04-24 21:55:54 · 1230 阅读 · 0 评论 -
C. Roads in Berland(思维+最短路)
https://codeforces.com/problemset/problem/25/C思路:O(n^2)枚举起点和终点看更新即可。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#include<cstdio>#i原创 2021-04-10 16:41:32 · 200 阅读 · 0 评论 -
1272E - Nearest Opposite Parity(思维+虚拟源点+反向建图)
https://codeforces.com/problemset/problem/1272/E思路:对于每个点1/0暴力去跑肯定超时。奇偶分开,以偶数为例。对于奇数的答案考虑建边后所有偶数跑完最短路的时候dis[]的答案,由于偶数很多,且以偶数作为开头,可以把所有的偶数连到一个虚拟源上去,边权为0.此时再对于能到达的点反向建边跑两个最短路就好。由于边权为0,1.bfs就好#include<iostream>#include<vector>#include<原创 2021-04-08 18:46:04 · 221 阅读 · 0 评论 -
1307D - Cow and Fields(思维+最短路)
https://codeforces.com/problemset/problem/1307/D1 ,n(不走这条边,即dis1[ n ])1,x,y,n(dis1[ x ] + 1 + disn[ y ]1,y,x,n(dis1[ y ] + 1 + disn[ x ])做两次bfs求出dis1disn,此时n^2暴力。优化:对v排序。假如为1->i->j->n,那么满足dis1[i]+disn[j]<dis1[j]+disn[i],移项得dis1[i.原创 2021-04-05 12:14:06 · 194 阅读 · 0 评论 -
1205B - Shortest Cycle(floyd最小环+鸽巢原理)
https://codeforces.com/problemset/problem/1205/B如果一个2进制位为1的数存在三个及以上,一定有三元环。根据抽屉原理,当n >= 128时,至少有1个位满足该位的1的个数大于等于3,即构成三元环。于是n <= 128时跑floyd最小环。Note:0不能建边,输入就扔掉。floyd原理:对于两点的最短路径,通过其中间的所有点k:1~n来更新他。当k这个点到4时,比如1和6的最短路已经被k=1,k=2 , k=3更新了。其..原创 2021-04-03 00:25:58 · 163 阅读 · 0 评论 -
P1608 路径统计(最短路计数)
https://www.luogu.com.cn/problem/P1608思路:在更新最短路dis松弛条件时候加个dp,如果更新了,dp[v]=dp[u],如果相等不更新,dp[v]+=dp[u];起点初始化1.这个题的细节。重边算最小的一条。map搞的话卡常了,O2能过。题目给的n^2就直接邻接矩阵#include<iostream>#include<vector>#include<queue>#include<cstring>原创 2021-03-17 11:56:19 · 218 阅读 · 0 评论 -
B. Navigation System(思维+反向建边最短路/最短路计数)
https://codeforces.com/problemset/problem/1320/B思路:需要看当前路线的下一步是否在最短路径上。如果在的话(最短距离-1)就找其相同的到最短距离的到终点的路径有多少。如果不在的话就说明自己走的路线不在最短路上,导航更正一次。至于怎么找多个点到终点的最短路,反向建图就是终点到各个点的最短路,距离是一样的。注意;多条最短路的话,导航也只能在那个点选择一条进行规划。所以最后修改最大值的时候找到一个就break;#include<iost原创 2021-03-16 19:53:54 · 168 阅读 · 0 评论 -
E. Paired Payment(多维最短路dijkstra)
https://codeforces.com/contest/1486/problem/E题意:给一张无向图,一次只能同时走两步,权值为两条边的边权和的平方。求1到其他每个点的最短距离。达不到就输出-1思路:拆点跑分层图也可以做。这里学习的是最短路dp的形式。原来的dijkstra最短路只更新最短距离,即dp[i]这道题需要在原来的基础上多加dp的状态,观察到这个边权很小,适合做dp的一维状态。即dp[i][j][num]:从起点到x,上一条边的权值为j,且已经经过了num条边,原创 2021-02-24 19:57:29 · 400 阅读 · 0 评论 -
B. Greg and Graph(逆向思维+删点floyd统计所有点对最短路和)
https://codeforces.com/problemset/problem/295/B思路:动态减少每次求和如果复杂度很大不好想,尝试逆向,每次加一次动态维护累加那么先处理好每个点的逻辑顺序1,2,3,4...n.然后每次累加去跑一次flyod,求和只求当前<=k的逻辑和。不太理解就再复习一下floyd的dp思想。最外层floyd即枚举中间点k,那么我们加一个点,就把它用于全图更新。#include<iostream>#include<vect原创 2021-02-12 21:56:33 · 314 阅读 · 0 评论 -
E. 奇妙的棋盘(思维好题+最短路)
问题描述因为前面选手们的帮忙,小蛤智商提升了!他现在在玩一个神奇的游戏:给出了一个n*m的棋盘,其中的格子有的黑,有的白。我们对一个格子进行操作,可以使这个格子与它所处的颜色相同的联通块中的所有格子颜色全部取反。问至少要多少次操作可以使所有格子变白?输入格式第一行两个整数n,m代表棋盘尺寸;接下n行一个字符串描述每一行棋盘情况:W为白B为黑。输出格式输出一个整数表示最少的次数。样例输入样例输出数据范围思路:首先去除联通块的影响来看题,就是缩点。那么新图就单纯原创 2021-02-04 12:39:28 · 790 阅读 · 1 评论 -
【NOIP2012模拟8.7】找位置(暴力全排列)
思路:K比较小,暴力预处理K次最短路不必说。问题在于哪种排列是最优的呢?采用全排列暴力,每种顺序按照一个环走一遍。至于一条路走两遍以及以上的情况,在起点的枚举中会被包括进去。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#inclu..原创 2021-01-29 15:09:17 · 145 阅读 · 0 评论 -
G. Reducing Delivery Cost(思维+最短路)
https://codeforces.com/contest/1433/problem/G思路:开始看到了路线免费,以为是出了分层最短路板子,看了看发现只让一条路免费。开始直接考虑暴力,枚举每条边,然后每个点进行dijkstra,最后取最小。复杂度O(n^2klogm);考虑一下对每个点其实可以先预处理,提前处理好每个点的对应的最短路。O(n^2logm)考虑免费的边的贡献。对每一个ki来说,边(a,b)有三种情况。1.开始不在其最短路路径上,免费后也不在其最短路路径上。2.开始原创 2020-10-21 17:02:14 · 738 阅读 · 0 评论 -
E. Egor in the Republic of Dagestan(DAG最短路+dp)详解
https://codeforces.com/contest/1407/problem/E题意:给一个有向图,每条边有一个类型(0或者1),什么类型的城市就只能走什么类型的边,你需要给每个城市指定类型(0/1),使得从1到n 的最短路最长,甚至长到1无法到达n思路:开始想的时候感觉是个dp,而且要反向建边。这道题补了挺久的。首先要明确这是个dp,那么dp的话正常开始是正向入手,但是正向很难处理,为什么呢?比如 1---(0,1)---->2----(1,0)---->3从1转移到原创 2020-09-14 19:33:12 · 284 阅读 · 0 评论 -
B. Labyrinth
https://codeforces.com/problemset/problem/1063/B题意:给定一个矩阵,你在一个给定坐标,规定向左右走的步数有限,计算你能走的最大步数。分析:假如只给了一个限制,也就是向左走的步数有限制,那么是不是bfs的时候向左走的代价赋值为1,向其他方向走的代价就是0.那么变成了01最短路,deque+bfs就可以。每次将代价为0的压入队头,代价为1的压入队尾,然后bfs更新点。01最短路:https://www.geeksforgeeks.org/0-1-b原创 2020-09-03 11:22:38 · 251 阅读 · 0 评论 -
新冠病毒要回家
链接:https://ac.nowcoder.com/acm/contest/7031/F来源:牛客网题目描述新冠病毒被医生从患者的身体中赶了出来,它很伤心,原本一切都是那么的快乐,它和它的孩子们快乐地生活在一起。但是这里的抗疫力度太强了,被赶出来后,由于人们都带了口罩,它没办法再次回到之前那样的舒适环境。现在它想要离开医院回家。它有很多条路可以离开医院,虽然它想要尽可能快的回去,但是它还想看看路上的其它病毒过得怎么样,也好顺便带它们一起离开,于是它决定走第二短的路回去。医院总有 V (0 .原创 2020-08-16 21:26:30 · 433 阅读 · 0 评论 -
Deliver the Cake
HDU – 6805It is Zhang3’s birthday! Zhang3 has bought a birthday cake and now it’s time to take it home.There arennvillages, labeled1,2,…,n1,2,…,n. There aremmbidirectional roads, theithithof which connects villageaiai,bibiand it isdidimete...转载 2020-08-07 11:10:38 · 261 阅读 · 0 评论 -
P2939 [USACO09FEB]REVAMPING TRAILS G
https://www.luogu.com.cn/problem/P2939题目描述Farmer John dutifully checks on the cows every day. He traverses some of the M (1 <= M <= 50,000) trails conveniently numbered 1..M from pasture 1 all the way out to pasture N (a journey which is always p原创 2020-08-05 19:57:37 · 139 阅读 · 0 评论 -
P4822 [BJWC2012]冻结
https://www.luogu.com.cn/problem/P4822题目背景“我要成为魔法少女!”“那么,以灵魂为代价,你希望得到什么?”“我要将有关魔法和奇迹的一切,封印于卡片之中„„”在这个愿望被实现以后的世界里,人们享受着魔法卡片(SpellCard,又名符卡)带来的便捷。现在,不需要立下契约也可以使用魔法了!你还不来试一试?比如,我们在魔法百科全书(Encyclopedia of Spells)里用“freeze”作为关键字来查询,会有很多有趣的结果。例如,我原创 2020-08-05 19:32:44 · 225 阅读 · 0 评论 -
P4568 [JLOI2011]飞行路线
https://www.luogu.com.cn/problem/P4568题目描述Alice 和 Bob 现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。该航空公司一共在nn个城市设有业务,设这些城市分别标记为00到n-1n−1,一共有mm种航线,每种航线连接两个城市,并且航线有一定的价格。Alice 和 Bob 现在要从一个城市沿着航线到达另一个城市,途中可以进行转机。航空公司对他们这次旅行也推出优惠,他们可以免费在最多kk种航线上搭乘飞机。那么 Alice 和 Bob 这...原创 2020-08-05 19:09:38 · 562 阅读 · 1 评论