洛谷P3110 [USACO14DEC]驮运Piggy Back
P3110 [USACO14DEC]驮运Piggy Back
题目描述
贝西和她的妹妹艾尔斯白天在不同的地方吃草,而在晚上他们都想回到谷仓休息。聪明的牛仔,他们想出了一个计划,以尽量减少他们在步行时花费的总能量。
贝西在从田野走到相邻的地方时,花费B个能量单位,当她走到相邻的地方时,Elsie花费了E个能量单位。但是,如果Bessie和Elsie在同一个领域,Bessie可以携带Elsie在她的肩上,两者都可以移动到相邻的场地,而只花费P个能量单位(P可能比B + E小得多,Bessie的数量而Elsie会单独走到邻近的地方)。如果P非常小,最节能的解决方案可能涉及到Bessie和Elsie前往一个共同的会议场地,然后一起携带搭载旅行到谷仓的其余时间。当然,如果P很大,那么Bessie和Elsie可能最有意义的旅行
分别。在附注中,Bessie和Elsie对“背负”一词不满意,因为他们不明白为什么农场上的猪应该得到这种卓越形式的所有信用
运输。
给定B,E和P以及农场的布局,请计算Bessie和Elsie到达谷仓所需的最低能量。
Bessie和Elsie在不同的区域放牧,他们希望花费最小的能量返回谷仓。从一个区域走到一个相连区域,Bessie要花费B单位的能量,Elsie要花费E单位的能量。
如果某次他们两走到同一个区域,Bessie可以背着Elsie走路,花费P单位的能量走到另外一个相连的区域,满足P <B + E。
相遇后,他们可以一直背着走,也可以独立分开。
输入输出格式
输入格式:
INPUT :(文件piggyback.in)
第一行输入包含正整数B,E,P,N和M.所有这些最多为40,000。B,E和P如上所述。N是场中的字段数(编号为1..N,其中N> = 3),M是字段之间的连接数。Bessie和Elsie分别从1区和2区开始。谷仓住在田间N.
输入中的下一行M行描述了由两个字段的整数索引指定的一对不同字段之间的连接。连接是双向的。总是可以沿着一系列这样的连接从场1到场N,场2到场N。
输出格式:
OUTPUT:(文件piggyback.out)
一个整数,指定最小的能量Bessie和
Elsie集体需要花费到达谷仓。在例子中
这里显示,贝西从1到4,Elsie从2到3
然后,他们一起旅行从4到7到8。
输入输出样例
4 4 5 8 8
1 4
2 3
3 4
4 7
2 5
5 6
6 8
7 8
22
/*
三遍bfs分别求以1,2,n为起点的最短路,然后枚举然后枚举两人相遇的点,计算消耗之和即可
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
#define maxn 40010
int bb,ee,p,n,m,num,head[maxn];
long long ans=;
int a[maxn],b[maxn],c[maxn];
struct node{
int to,pre;
}e[maxn*];
bool vis[maxn];
void Insert(int from,int to){
e[++num].to=to;
e[num].pre=head[from];
head[from]=num;
}
void bfs(int start,int f[]){
memset(vis,,sizeof(vis));
queue<int>q;
q.push(start);
vis[start]=;
while(!q.empty()){
int now=q.front();q.pop();
for(int i=head[now];i;i=e[i].pre){
int to=e[i].to;
if(!vis[to]){
vis[to]=;
f[to]=f[now]+;
q.push(to);
}
}
}
}
int main(){
//freopen("Cola.txt","r",stdin);
scanf("%d%d%d%d%d",&bb,&ee,&p,&n,&m);
int x,y;
for(int i=;i<=m;i++){
scanf("%d%d",&x,&y);
Insert(x,y);
Insert(y,x);
}
bfs(,a);
bfs(,b);
bfs(n,c);
for(int i=;i<=n;i++){
ans=min(ans,1LL*(bb*a[i]+ee*b[i]+p*c[i]));
}
cout<<ans;
}
洛谷P3110 [USACO14DEC]驮运Piggy Back的更多相关文章
- 2018.08.17 洛谷P3110 [USACO14DEC]驮运(最短路)
传送门 一道sb最短路,从两个起点和终点跑一边最短路之后直接枚举两人的汇合点求最小值就行了. 代码: #include<bits/stdc++.h> #define N 40005 #de ...
- 【题解】Luogu P3110 [USACO14DEC]驮运Piggy Back
[题解]Luogu P3110 [USACO14DEC]驮运Piggy Back 题目描述 Bessie and her sister Elsie graze in different fields ...
- luogu P3110 [USACO14DEC]驮运Piggy Back |最短路
题目描述 Bessie and her sister Elsie graze in different fields during the day, and in the evening they b ...
- P3110 [USACO14DEC]驮运Piggy Back
传送门 做过次短路后,再来做这题感觉轻松不少. 这题看着就像最短路模板题. 思路: 虽说题目看起来比较水,但是码起来还是有点难度的.(对我这个蒟蒻来说) 这道题,跟"路障"一题差不 ...
- Luogu P3110 [USACO14DEC]驮运Piggy Back
解题思路 看到下面很多人都在说什么遇到了之后要不要背着走,其实根本不需要,同样的我也是跑了三遍$SPFA$,求出了以$1$为起点到个点的$dist$,和以$2$为起点到个点的$dist$,还有以$n$ ...
- [USACO14DEC]驮运Piggy Back
题目描述 Bessie 和 Elsie在不同的区域放牧,他们希望花费最小的能量返回谷仓.从一个区域走到一个相连区域,Bessie要花费B单位的能量,Elsie要花费E单位的能量. 如果某次他们两走到同 ...
- [luoguP3110] [USACO14DEC]驮运Piggy Back(SPFA || BFS)
传送门 以 1,2,n 为起点跑3次 bfs 或者 spfa 那么 ans = min(ans, dis[1][i] * B + dis[2][i] * E + dis[3][i] * P) (1 & ...
- 洛谷 [P3110] 驮运
题目略带一点贪心的思想,先跑三遍最短路(边权为一,BFS比SPFA高效) 一起跑总比分开跑高效,枚举两人在何点汇合,输出最小值. #include <iostream> #include ...
- 洛谷 P3111 [USACO14DEC]牛慢跑Cow Jog_Sliver
P3111 [USACO14DEC]牛慢跑Cow Jog_Sliver 题目描述 The cows are out exercising their hooves again! There are N ...
随机推荐
- Oracle | PL/SQL Check约束用法详解
1. 目标 实例讲解在Oracle中如何使用CHECK约束(创建.启用.禁用和删除) 2. 什么是Check约束? CHECK约束指在表的列中增加额外的限制条件. 注: CHECK约束不能在VIEW中 ...
- mvn 创建的项目 导入到eclipse
首先,我的工具版本如下: jdk: java version "1.6.0_10-rc2"; maven: apache-maven-3.1.0; eclipse: MyEclip ...
- Android Weekly Notes Issue #322
Android Weekly Issue #322 August 12th, 2018 Android Weekly Issue #322. 本期内容包括: 键盘的图像支持; 网络安全实现; Kotl ...
- MVC+Ext.net零基础学习记录(二)
很多人在开发一个新的项目时,需要先决定项目的整体架构,是决定使用MVC的同时也不例外,具体包含:项目的多语言性,项目的多风格选择,项目的可扩展性 其中项目的多语言性:http://www.cnblog ...
- android的GPS代码分析JNI如何HAL之间如何设置回调函数【转】
本文转载自:http://blog.csdn.net/kmesg/article/details/6531577 本文只关注JNI和HAL的接口部分 在jni的android_location_Gps ...
- css的核心
css核心内容--流 流:在现实生活中就是流水,在网页设计中就是元素的排列方式. 标准流:元素在网页中就像流水,排在前面的元素内容前面出现,排在后面的元素内容后面显示. 这种布局方式就称为标准流的布局 ...
- bzoj 1049: 数字序列 dp
题目大意: 给定一个长度为n的整数序列.在改变的数最小的和改变的幅度最小的前提下把它变成一个单调严格上升的序列.求改变的最小的数和这个幅度. 题解: (貌似以前考试考过这道题) 其实这道题就是两道题拼 ...
- Codeforces 762C Two strings 字符串
Cpdeforces 762C 题目大意: 给定两个字符串a,b\((len \leq 10^5)\),让你去b中的一个连续的字段,使剩余的b串中的拼接起来的两个串是a穿的子序列.最大化这个字串的长度 ...
- 洛谷【P4883】mzf的考验
浅谈\(splay\):https://www.cnblogs.com/AKMer/p/9979592.html 浅谈\(fhq\)_\(treap\):https://www.cnblogs.com ...
- mina2中的线程池
一.Mina中的线程池模型 前面介绍了Mina总体的层次结构,那么在Mina里面是怎么使用Java NIO和进行线程调度的呢?这是提高IO处理性能的关键所在.Mina的线程调度原理主要如下图所示: A ...