题目描述

某天,哈利•波特准备去拯救 Super Swamuel 星球上的生灵。该星球上有七种不同的地形,依次分别是:石子路、森林、草地、山地、雪地、沼泽和沙漠。分别用数字 1~7 来表示,穿越这七种地形需要的时间分别用 h1~h7 表示。

任意两个城市之间都存在至少一条通路,而且任意两个直通的城市之间都只存在一种地形。哈利•波特穿越地形 u 所需要的时间与该地形的区域大小无关,而与地形 u 的区域中是否有魔法石有关。如果地形 u 的区域中没有魔法石,哈利•波特需要花费 hu 的时间能穿越该地区;如果他有魔法石,则只要花一半的时间(hu/2)就能穿越地形 u。这里 hu/2 用整除法。

已知没有魔法石的情况下穿越七种地形需要的时间分别如下表格:

地形名称 石子路  森林 草地 山地 雪地 沼泽 沙漠
地形编号(i) 1 2 3 4 5 6 7
穿越时间(hi) 2 6 4 8 6 10 14

哈利•波特将从城市 i 出发到城市 j 去伸张正义,请你帮他寻找出最快的路线。

输入格式

第一行有七个整数 s1~s7 ,分别表示七种地形中是否有魔法石,su=0 表示地形 u 的区域中没有魔法石;su=1 表示地形 u 的区域中有魔法石。su ∈{0,1}
第二行有两个正整数,分别是起点 i 的编号和终点 j 的编号。
第三行有一个正整数 m(m≤10000),表示以下有 m 对直接相连的城市。
随后 m 行,每行三个正整数 i,j,k,分别是城市 i 与城市 j 之间连通,这两个城市之间的地形是 k,其中:0<i,j≤1000,k∈{1,2,3,4,5,6,7} ,地形编号意义请参考“题目描述”中的表格。

输出格式

输出一个整数,即穿越起点城市 i 与终点城市 j 之间的地形需要的最短时间。

样例数据 1

输入 

0 1 0 0 0 0 0 
1 4 

1 2 1 
1 3 1 
2 4 2 
3 4 3

输出

5

备注

【样例说明】
从路径 1→2→4 穿越,需要的最短时间是:2+(6/2)=5

分析 

就是一个最短路的板子题,我这里用的是迪杰斯特拉+堆优化

代码

#include<bits/stdc++.h>
#define in read()
#define N 1009
#define M 20009
using namespace std;
inline int read(){char ch;int res=0;while((ch=getchar())<'0'||ch>'9');while(ch>='0'&&ch<='9'){res=(res<<3)+(res<<1)+ch-'0';ch=getchar();} return res;
}
int h[8]={2,6,4,8,6,10,14};
int head[N],nxt[M],w[M],to[M],cnt=0;
int sta,end,m;
void add(int x,int y,int z){nxt[++cnt]=head[x];head[x]=cnt;to[cnt]=y;w[cnt]=z;nxt[++cnt]=head[y];head[y]=cnt;to[cnt]=x;w[cnt]=z;
}
priority_queue<pair<int,int> > q;
int dis[1009];
void dij(int st){//最短路板子memset(dis,0x3f3f3f3f,sizeof(dis));q.push(make_pair(st,0));dis[st]=0;while(!q.empty()){int u=q.top().first;int d=q.top().second;d=-d;q.pop();for(int e=head[u];e;e=nxt[e]){int v=to[e];if(dis[v]>d+w[e]){dis[v]=d+w[e];q.push(make_pair(v,-dis[v]));//存负的,大根堆变小}}}
}
int main(){int i,j,k,x,y,z;for(i=0;i<7;++i){k=in;if(k==1) h[i]/=2;}sta=in;end=in;m=in;for(i=1;i<=m;++i){x=in;y=in;z=in;//读入的z是从1~7,而我是用0~6来存储的add(x,y,h[z-1]);}dij(sta);printf("%d",dis[end]);return 0;
}

0924-安徽省选 2002-哈利●波特与魔法石相关推荐

  1. 洛谷 P2559 [AHOI2002]哈利·波特与魔法石

    P2559 [AHOI2002]哈利·波特与魔法石 题目描述 输入输出格式 输入格式: 文件中第一行有七个数,分别是 S1. S2 . -. S7 :第二行有两个数,依次分别是起点城市 i 和终点城市 ...

  2. 洛谷——P2559 [AHOI2002]哈利·波特与魔法石

    P2559 [AHOI2002]哈利·波特与魔法石 题目描述 输入输出格式 输入格式: 文件中第一行有七个数,分别是 S1. S2 . -. S7 :第二行有两个数,依次分别是起点城市 i 和终点城市 ...

  3. fjnu 1441 哈利.波特与魔法石

    Description 大年初三的那个晚上,小可可去电影院看了<哈利?波特与魔法石>,回到家坐在椅子上不一会儿就睡着了,并且梦见自己成了哈利?波特驰骋在充满了正义与邪恶的宇宙中执著地为了正 ...

  4. 电影推荐之《 哈利·波特与魔法石》 隐私策略(Privacy policy)

    1.隐私政策涵盖您对本应用的使用. 2.电影推荐之< 哈利·波特与魔法石>不会收集.存储.分享您的任何个人信息或者与您的设备相关的信息.我们不会收集任何统计数据和分析数据,也不会跟踪用户的 ...

  5. 【AHOI2002】哈利●波特与魔法石

    题目背景 AHOI2002 DAY2 T2 题目描述 某天,哈利•波特准备去拯救 Super Swamuel 星球上的生灵.该星球上有七种不同的地形,依次分别是:石子路.森林.草地.山地.雪地.沼泽和 ...

  6. [AHOI2002]哈利·波特与魔法石

    这道题比较简单,就是一个最短路(SSSP).数据水,用Floyd即可AC.这里用了Dijkstra. 1 #include <iostream> 2 #include <cstdio ...

  7. 哈里波特与魔法石pdf_哈里·罗伯茨(CSS)CSS框架的命运与失败

    哈里波特与魔法石pdf Harry Roberts helps teams all over the world to build better front ends. Craig spoke to ...

  8. pta 哈利·波特的考试

    哈利·波特要考试了,他需要你的帮助.这门课学的是用魔咒将一种动物变成另一种动物的本事.例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等.反方向变化的魔咒就是简单地将原来的魔咒倒过来念 ...

  9. 《哈利·波特与死亡圣器(上)》BD中英双字无水印高清+1080P 720P蓝光地址

    ◎译 名 哈利·波特与死亡圣器(上)/哈利波特:死神的圣物1(港/台)/哈利·波特与死圣(上)/哈利·波特7 ◎片 名 Harry Potter and the Deathly Hallows Par ...

最新文章

  1. 如何写出符合Python审美的代码风格?
  2. Hibernate5环境搭建
  3. 新华计算机学校环境好吗,新华电脑校园环境好不好?(二)
  4. Netty之自定义RPC
  5. 备战双 11!96秒,100亿,支付宝万级规模 K8s 集群管理系统如何设计?
  6. 记录一次maven依赖成功导入,但找不到相关包的IDEA臭bug
  7. Python菜鸟入门:day09数据结构
  8. ulipad怎么运行python
  9. 首届全国大学生工程训练综合能力竞赛圆满落幕
  10. Python遗传算法解决作业调度问题(JSP)
  11. FMEA软件之旧版FMEA导入及快速转换为新版FMEA(FMEAHunter)
  12. Java实现日历小程序【代码】
  13. 【前端面经】面试:最快最全面的渗透应聘者真实水平
  14. D2007从win7升级到win10下的莫名其妙问题。
  15. 微型计算机中什么是小随机储存器,随机存取存储器
  16. 移动OA,颠覆企业传统助力办公更高效
  17. python 列表乘一个数字
  18. 2225. 找出输掉零场或一场比赛的玩家
  19. Adobe Flashplayer orHTML5 Browser with WebGL or CSS3D support required 解决方案
  20. 计算机专业写作与沟通大作业,四川电大5110047 计算机办公软件应用第1次形考作业答案...

热门文章

  1. SQL SERVER 2005镜像配置(包含见证服务器)
  2. 微信网页开发(10)--扫一扫功能接口
  3. 视觉伺服控制完整解析
  4. Reabble.com-KindleRSS新闻杂志订阅
  5. js几种常见的递归方法
  6. 深度理解Java中的static
  7. 万卷书 - 快速写作 [Write Your Book in a Flash]
  8. 创建日志表和插日志信息的sp
  9. Apex机器码-逃离塔科夫机器码(年度最新教程依旧可用)
  10. 攻防世界wth.sh