传送门 以 1,2,n 为起点跑3次 bfs 或者 spfa 那么 ans = min(ans, dis[1][i] * B + dis[2][i] * E + dis[3][i] * P) (1 <= i <= n) #include <queue> #include <cstdio> #include <cstring> #include <iostream> #define N 40001 #define LL long long #def…
P3110 [USACO14DEC]驮运Piggy Back 题目描述 贝西和她的妹妹艾尔斯白天在不同的地方吃草,而在晚上他们都想回到谷仓休息.聪明的牛仔,他们想出了一个计划,以尽量减少他们在步行时花费的总能量. 贝西在从田野走到相邻的地方时,花费B个能量单位,当她走到相邻的地方时,Elsie花费了E个能量单位.但是,如果Bessie和Elsie在同一个领域,Bessie可以携带Elsie在她的肩上,两者都可以移动到相邻的场地,而只花费P个能量单位(P可能比B + E小得多,Bessie的数量而…
[题解]Luogu P3110 [USACO14DEC]驮运Piggy Back 题目描述 Bessie and her sister Elsie graze in different fields during the day, and in the evening they both want to walk back to the barn to rest. Being clever bovines, they come up with a plan to minimize the tot…
题目描述 Bessie 和 Elsie在不同的区域放牧,他们希望花费最小的能量返回谷仓.从一个区域走到一个相连区域,Bessie要花费B单位的能量,Elsie要花费E单位的能量. 如果某次他们两走到同一个区域,Bessie 可以背着 Elsie走路,花费P单位的能量走到另外一个相连的区域,满足P<B+E. 相遇后,他们可以一直背着走,也可以独立分开. 输入输出样例 输入样例#1: 4 4 5 8 8 1 4 2 3 3 4 4 7 2 5 5 6 6 8 7 8 输出样例#1: 22 3次SPF…
解题思路 看到下面很多人都在说什么遇到了之后要不要背着走,其实根本不需要,同样的我也是跑了三遍$SPFA$,求出了以$1$为起点到个点的$dist$,和以$2$为起点到个点的$dist$,还有以$n$为起点到个点的$dist$. 之后直接枚举两头牛在哪里相遇,相遇之后一起背着走的路程乘以$p+$相遇之前$B$走的距离乘以$b+$相遇之前$E$走的距离乘以$e$,去一个最小的这样的值就是答案. 关于为什么不需要分类讨论,因为你把每个点都枚举了一遍,即使存在$p>b+e$的情况,那这种情况就等价于两…
传送门 做过次短路后,再来做这题感觉轻松不少. 这题看着就像最短路模板题. 思路: 虽说题目看起来比较水,但是码起来还是有点难度的.(对我这个蒟蒻来说) 这道题,跟"路障"一题差不多,都属于最短路中的分段求值.(即枚举两个最短路,及中间连接部分) 那么就有思路了: ①求出点 1,点 2,点 n 到其他所有点的单源最短路径.(我用的是三次Dijkstra,打上瘾了) ②即最关键的是枚举每一个点(即两只牛相遇的点),计算相遇前,两只牛各自走过的路径耗费的能量,然后令两只牛相遇后强行连在一起…
题目描述 Bessie and her sister Elsie graze in different fields during the day, and in the evening they both want to walk back to the barn to rest. Being clever bovines, they come up with a plan to minimize the total amount of energy they both spend while…
传送门 一道sb最短路,从两个起点和终点跑一边最短路之后直接枚举两人的汇合点求最小值就行了. 代码: #include<bits/stdc++.h> #define N 40005 #define inf 0x3f3f3f3f using namespace std; struct Node{int v,next;}e[N<<1]; int first[N],cnt=0,b,E,p,n,m,d[N][3]; bool vis[N]; inline void add(int u,in…
这是一道非常好的题目,融合了很多知识点. ZOJ1232-Adventrue of Super Mario 这一题折磨我挺长时间的,不过最后做出来非常开心啊,哇咔咔咔 题意就不累述了,注释有写,难点在于状态转移方程的确立和SPFA的过程 //最短路:Floyd+SPFA(BFS)+DP //Time:20Ms Memory:336K //题目很好,数据较弱,网上部分代码有些问题却能够A掉 //题意:超级马里奥要从A+B处背着公主以最短路程到达1处,其中1-A是村庄,剩下的是城堡 // 有可使用K…
题目大意:给定你一个包含n个点m条边的无向图,现在最多在图中保留k条边,问怎么删除多的边,使得图中良好的节点数最多,求出保留在图中的边的数量和编号. 良好的节点定义为:删除某条边后该点到点1的最短距离不变. 思路:先求出所有点到点1的最短距离,之后再bfs一遍,若遍历到某一节点时的距离等于该点到点1的最短距离就将该条边加进去,直到添加到k条边或者遍历结束.(虽然过了但是还是觉得有有的情况好像过不了,但是没想出来...可能数据还有点水..) 一开始INF值设小了WA了四次... INF值设置1e1…