上学要迟到了

题目

牛牛早上起床一看,自己睡过了,赶紧起床准备去学校,他去学校只有两种方式,坐公交车和步行,牛牛去学校是一条直线,这条直线上总共有 nnn 个车站,车站之间的距离都是相等的,每个车站只有一种公交车aia_iai​,每个公交车只在对应的公交站停车,每个公交车的速度也不一样,第 iii 种公交车过一站的时间需要 tit_iti​,并且公交车是单向行驶,只能从左到到右,走路可以任意走,然而牛牛自己步行走一站需要的时间为 TTT,恰好牛牛家和学校都在某一个站点,分别为 sss 和 ttt,问最少需要多少时间牛牛才能到学校?

分析

直接建图跑最短路,注意公交车是单向的,而人可以双向行走

代码

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<set>
#include<map>
#include<cmath>
#include<queue>
#include<string>
#include<vector>
#include<cstdio>
#include<random>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
#include<unordered_set>
using namespace std;
mt19937 rnd(233);
typedef long long ll;
typedef pair<int,int> pii;
const int mod=1e9+7;
const int N=100010;
int h[N],e[N],ne[N],w[N],idx;
int n,m,s,t,T;
int cost[N];
int last[N];
bool st[N];
int dist[N];
void add(int a,int b,int c)
{e[idx]=b;ne[idx]=h[a];w[idx]=c;h[a]=idx++;
}
int dijkstra(int start,int ed)
{memset(dist,0x3f,sizeof dist);dist[start]=0;priority_queue<pii,vector<pii>,greater<pii> >q;q.push({0,start});while(q.size()){int t=q.top().second;q.pop();if(st[t]) continue;st[t]=1;for(int i=h[t];i!=-1;i=ne[i]){int j=e[i];if(dist[j]>dist[t]+w[i]) {dist[j]=dist[t]+w[i];q.push({dist[j],j});}}if(t+1<=n) {if(dist[t+1]>dist[t]+T){dist[t+1]=dist[t]+T;q.push({dist[t+1],t+1});}}if(t-1>0){if(dist[t-1]>dist[t]+T){dist[t-1]=dist[t]+T;q.push({dist[t-1],t-1});}}}return dist[ed];
}int main()
{IO;memset(h,-1,sizeof h);cin>>n>>m>>s>>t>>T;for(int i=1;i<=m;i++) cin>>cost[i];for(int i=1;i<=n;i++){int a;cin>>a;if(last[a]) add(last[a],i,cost[a]);last[a]=i;}cout<<dijkstra(s,t)<<'\n';return 0;
}

上学要迟到了【最短路转化】相关推荐

  1. P4300-[AHOI2006]上学路线【网络流,最短路】

    正题 题目链接:https://www.luogu.com.cn/problem/P4300 题目大意 nnn个点mmm条边的无向图.求1∼n1\sim n1∼n的最短路和删除cic_ici​和最小的 ...

  2. English trip 自习内容 句子结构和成分

    # 英语里的词汇分为10种词性 n. 名词 = noun # 名词不能修饰任何词,它只能被其他词修饰. v. 动词 = verb # 系动词不是形容词,不能用来修饰词,它们就是动词,例如be,get, ...

  3. Written English-书面-一般过去时

    2 Written English-书面 英语的学习分为口语和书面,口语侧重于听说,而书面侧重于书写. 2.5 时态学习 英语的时态就是用于区分不同时间区间下动作的状态,可以通过时态的一些特点来判定动 ...

  4. 地图统计_吃甜的还是咸的!太仓不完整饭团统计地图来了!

    太仓饭团特辑  最近收到好多粉丝的私信,强烈要求叔出一篇太仓饭团攻略.于是早上6点就出门了,从市区到郊区能遇到的饭团都拔草了一遍.一共10家饭团摊,请接收~ 太仓油炸地图请戳这里:甜酱辣酱都刷点!太仓 ...

  5. 8000 sentences of Oral English(one)

    英语口语8000句 这套英语口语8000句总共分为五章159个小节,但是网上流传的内容里没有第三章,本人重新划分出了第三章,修改了里面有错误的部分.因为里面涉及的很多地名.食物是日本的,所以我猜测这套 ...

  6. 大学英语精读第三版(第六册)学习笔记(原文及全文翻译)——6B - John Thomas’s Cube(约翰·托马斯的立方体)

    Unit 6B - John Thomas's Cube John Thomas's Cube John Leimert John Thomas Thompson, aged eight years ...

  7. 老子哲学与太极拳技击

    太极拳是中华武术园地中的一朵奇葩.它熔铸了中华民族古朴而璨烂的文化,使习练者不仅从中得到健身.修身.养性的无穷乐趣,更感受到其中奥妙无穷的哲学魅力.本文试从太极拳的技击特点入手,来探讨太极拳与老子哲学 ...

  8. python初中必背语法_初中英语考前必背重点语法知识汇总,高分必备,强烈建议收藏!...

    每次拿到英语试卷,有的同学就非常困惑:为什么我背了那么多的固定词组,句子,还是拿不到高分,初中英语涉及的语法知识比较多,很多同学并不能做到一一掌握. 没关系,新文达小文帮你归纳了每年中考必考的七大语法 ...

  9. 发明计算机作文300字,关于科学发明的作文300字(共7篇)

    假如我是一位发明笑的科学家 格尔木市江源路小学四年级(2)班吴桐 假如我是一位发明笑的科学家,我会发明许多欢笑.送给内心阴郁的人们,赶走他们的伤痛,带给他们阳光,让幸福的脚步走进每一个角落,让生命如花 ...

最新文章

  1. ping 不通 华为三层交换机vlan_华三两台三层华为交换机 vlan互访 配置
  2. MyBatis-20MyBatis高级结果映射【一对一映射(4种方式)】
  3. 如何用 Redis 做实时订阅推送的?
  4. 集宁哪有计算机培训班,集宁区有这么一个空间,叫共享自习室
  5. 服务器哪种系统最好,云服务器哪种系统好用
  6. 你的主机中的软件中止了一个已建立的连接。_winscp中文版,winscp中文版软件的使用技巧...
  7. 使用adb工具打开TCL电视的第三方应用安装权限
  8. vue针对ele的form组件校验
  9. Contradiction Detection with Contradiction-Specific Word Embedding
  10. CSP 2018-9-4 再卖菜 搜索 + 剪枝
  11. CMD命令汇总 电脑入门知识【装机吧】
  12. C#中操作Word(9)—— 向Word中插入图表的三种方法(二)
  13. excel拆分单元格,然后每个拆分出的单元格沿用原未拆分单元格内容
  14. 攻防世界 misc 打野
  15. 正则表达式-匹配横杠-本身
  16. 2022情人节最适合送的礼物
  17. RSPapers | 对话推荐系统论文合集
  18. WorkFlow .Net 流程撤回
  19. brackets 快捷键 有大用
  20. 如何用多线程实现归并排序

热门文章

  1. hashmap扩容 面试_HashMap面试,看完这一篇就够了(上)
  2. python 画树 递归_python递归函数绘制分形树的方法
  3. c语言幼儿园积木游戏,幼儿园《积木游戏》课件【三篇】
  4. 数据结构——图-有向带权图的邻接表基础
  5. w7下如何安装linux双系统,ubuntu安装教程(下): 教你装win7+Ubuntu双系统
  6. leetcode347. 前 K 个高频元素
  7. 一文了解分而治之和动态规则算法在前端中的应用
  8. github 检查代码质量_Android(8): 代码质量检查
  9. 无法载入增效工具_山东省 智能工具箱 智能工具管理 工具管理企业数字化管理...
  10. Codeforces Round #732 (Div. 2) D. AquaMoon and Chess 组合数学 + 找规律