Luogu P3110 [USACO14DEC]驮运Piggy Back
解题思路
看到下面很多人都在说什么遇到了之后要不要背着走,其实根本不需要,同样的我也是跑了三遍$SPFA$,求出了以$1$为起点到个点的$dist$,和以$2$为起点到个点的$dist$,还有以$n$为起点到个点的$dist$。
之后直接枚举两头牛在哪里相遇,相遇之后一起背着走的路程乘以$p+$相遇之前$B$走的距离乘以$b+$相遇之前$E$走的距离乘以$e$,去一个最小的这样的值就是答案。
关于为什么不需要分类讨论,因为你把每个点都枚举了一遍,即使存在$p>b+e$的情况,那这种情况就等价于两头奶牛在$n$点相遇。
附上代码
#include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <queue> const int maxn = 8e4+3, INF = 2147483647; int b, e, p, n, m, fir[maxn], nxt[maxn], u[maxn], v[maxn], cnt; int dist_n[maxn], dist_1[maxn], dist_2[maxn], w[maxn], Ans = INF; bool vis[maxn]; inline int read() {int x = 0, f = 1; char c;while (c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}while (c <= '9' && c >= '0') {x = x*10 + c-'0'; c = getchar();}return x * f; } inline void addedge(int x, int y, int z) {nxt[++cnt] = fir[x];fir[x] = cnt;u[cnt] = x, v[cnt] = y, w[cnt] = z; } inline void SPFA(int s, int *dist) {std::queue<int> Q;std::memset(vis, 0, sizeof(vis));std::fill(dist+1, dist+1+n, INF);vis[s] = 1, dist[s] = 0;Q.push(s);int x, k;while (!Q.empty()) {x = Q.front(), Q.pop();int k = fir[x];while (k != -1) {if(dist[v[k]] > dist[u[k]] + w[k]) {dist[v[k]] = dist[u[k]] + w[k];if(!vis[v[k]]) Q.push(v[k]);}k = nxt[k];}vis[x] = 0;} } int main() {b = read(), e = read(), p = read(), n = read(), m = read();std::memset(fir, -1, sizeof(fir));int x, y, z = 1;for(register int i=1; i<=m; i++) {x = read(), y = read();addedge(x, y, z), addedge(y, x, z);}SPFA(1, dist_1), SPFA(2, dist_2), SPFA(n, dist_n);for(int i=1; i<=n; i++)Ans = std::min(Ans, dist_1[i] * b + dist_2[i] * e + dist_n[i] * p);printf("%d", Ans); }
转载于:https://www.cnblogs.com/bljfy/p/9494330.html
Luogu P3110 [USACO14DEC]驮运Piggy Back相关推荐
- 【洛谷3110】【USACO14DEC】驮运Piggy Back
题目描述 Bessie and her sister Elsie graze in different fields during the day, and in the evening they b ...
- 驮运Piggy Back
题目描述 Bessie and her sister Elsie graze in different fields during the day, and in the evening they b ...
- Piggy Back_KEY
Piggy Back (piggyback.pas/c/cpp) [问题描述] Bessie 和她的姐姐 Elsie 在不同的田块吃草,晚上她们都返回牛棚休息.作为聪明的奶牛,她们想设计一个方案使得步 ...
- Piggy Back
[问题描述] Bessie 和她的姐姐 Elsie 在不同的田块吃草, 晚上她们都返回牛棚休息. 作为聪明的奶 牛, 她们想设计一个方案使得步行消耗的能量最少. Bessie 从一个田块到相邻的田块要 ...
- 补鞋匠迈尔鲁夫的故事(二)
"昨晚我丈夫回到房中,我还来不及跟他交谈,太监菲勒持信赶到我面前,对我说:'有十个奴仆站在宫门外,递这封信给我,对我说:劳你代我们吻我们主人迈尔鲁夫的,并劳驾把这封信交给他.我们是他的仆人, ...
- 攻城狮的苦逼选车经历
2019独角兽企业重金招聘Python工程师标准>>> 攻城狮的苦逼选车经历 转载请注明出处:http://netkiller.github.io/ 我因为玩摄影的关系接触到气车,之 ...
- 富人送了穷人一头牛,结果牛死了,看懂的离成功不远了!
你必须先上路!不是有了同行者才上路,是因为你在路上才会有同行者! 有个穷人,很穷,一个富人见他可怜,就起了善心,想帮他致富.富人送给他一头牛,嘱他好好开荒,等春天来了撒上种子,秋天就可以远离那个&qu ...
- 程序员职场规划:你的命运不是一头骡子
我在杭州工作,周末通常去爬山. 今年九月,这里将举办盛大的G20峰会.全城都在忙碌地筹备,山路上也不例外. 距离西湖最近的一圈山头,都在安装照明设备,准备在夜间亮灯. 那些灯柱都是铸铁做的,高度六七米 ...
- 你的命运不是一头骡子
2019独角兽企业重金招聘Python工程师标准>>> 你的命运不是一头骡子 作者: 阮一峰 我在杭州工作,周末通常去爬山. 2016年9月,这里将举办盛大的 G20 峰会.全城都在 ...
- 中国五十六个民族简介
56个民族是中华人民共和国灿烂星空中(五十六个星座). 中华民族共包括56个民族,汉族是中国的主体民族,占全部人口的91.51%,其他还有55个民族,占8.49%(第六次人口普查).汉族和55个少数民 ...
最新文章
- ubuntu 14.04安装postgresql最新版本
- wireshark安装
- svn文件同步到web服务器,即同步到网站根目录
- hp-ux mysql_HP-UX安装MySQL
- 4k视频分辨率的码流_8K电视来了!但是8K视频仍很遥远
- 比特飞使用的是什么主题
- 创龙DSP6748开发板驱动LCD屏
- 客户端与服务器之间通信收不到信息——readLine()
- win11如何禁用后台应用权限 Windows11禁用后台应用权限的设置方法
- useCallback()和useMemo()的作用
- 【全网最全】100款七夕节情人节表白网页制作HTML+CSS+JS
- 《战舰世界》携手汉堡王开启“战舰堡胃战”主题活动
- python少儿编程面试题-《与孩子一起学编程》python自测题
- ABB机器人示教器无法读取U盘怎么办
- [转]机器视觉代码大全
- bucket name does not follow Amazon S3 standards
- 2023全新纯净版本知识付费微信小程序源码_附搭建教程_亲测可用
- 弹性盒子布局(下面有代码)
- 查找父类的所有子类 crtl+alt+b
- Tableau基础 Tableau 数据集的使用