0924-安徽省选 2002-哈利●波特与魔法石
题目描述
某天,哈利•波特准备去拯救 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
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-哈利●波特与魔法石相关推荐
- 洛谷 P2559 [AHOI2002]哈利·波特与魔法石
P2559 [AHOI2002]哈利·波特与魔法石 题目描述 输入输出格式 输入格式: 文件中第一行有七个数,分别是 S1. S2 . -. S7 :第二行有两个数,依次分别是起点城市 i 和终点城市 ...
- 洛谷——P2559 [AHOI2002]哈利·波特与魔法石
P2559 [AHOI2002]哈利·波特与魔法石 题目描述 输入输出格式 输入格式: 文件中第一行有七个数,分别是 S1. S2 . -. S7 :第二行有两个数,依次分别是起点城市 i 和终点城市 ...
- fjnu 1441 哈利.波特与魔法石
Description 大年初三的那个晚上,小可可去电影院看了<哈利?波特与魔法石>,回到家坐在椅子上不一会儿就睡着了,并且梦见自己成了哈利?波特驰骋在充满了正义与邪恶的宇宙中执著地为了正 ...
- 电影推荐之《 哈利·波特与魔法石》 隐私策略(Privacy policy)
1.隐私政策涵盖您对本应用的使用. 2.电影推荐之< 哈利·波特与魔法石>不会收集.存储.分享您的任何个人信息或者与您的设备相关的信息.我们不会收集任何统计数据和分析数据,也不会跟踪用户的 ...
- 【AHOI2002】哈利●波特与魔法石
题目背景 AHOI2002 DAY2 T2 题目描述 某天,哈利•波特准备去拯救 Super Swamuel 星球上的生灵.该星球上有七种不同的地形,依次分别是:石子路.森林.草地.山地.雪地.沼泽和 ...
- [AHOI2002]哈利·波特与魔法石
这道题比较简单,就是一个最短路(SSSP).数据水,用Floyd即可AC.这里用了Dijkstra. 1 #include <iostream> 2 #include <cstdio ...
- 哈里波特与魔法石pdf_哈里·罗伯茨(CSS)CSS框架的命运与失败
哈里波特与魔法石pdf Harry Roberts helps teams all over the world to build better front ends. Craig spoke to ...
- pta 哈利·波特的考试
哈利·波特要考试了,他需要你的帮助.这门课学的是用魔咒将一种动物变成另一种动物的本事.例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等.反方向变化的魔咒就是简单地将原来的魔咒倒过来念 ...
- 《哈利·波特与死亡圣器(上)》BD中英双字无水印高清+1080P 720P蓝光地址
◎译 名 哈利·波特与死亡圣器(上)/哈利波特:死神的圣物1(港/台)/哈利·波特与死圣(上)/哈利·波特7 ◎片 名 Harry Potter and the Deathly Hallows Par ...
最新文章
- 如何写出符合Python审美的代码风格?
- Hibernate5环境搭建
- 新华计算机学校环境好吗,新华电脑校园环境好不好?(二)
- Netty之自定义RPC
- 备战双 11!96秒,100亿,支付宝万级规模 K8s 集群管理系统如何设计?
- 记录一次maven依赖成功导入,但找不到相关包的IDEA臭bug
- Python菜鸟入门:day09数据结构
- ulipad怎么运行python
- 首届全国大学生工程训练综合能力竞赛圆满落幕
- Python遗传算法解决作业调度问题(JSP)
- FMEA软件之旧版FMEA导入及快速转换为新版FMEA(FMEAHunter)
- Java实现日历小程序【代码】
- 【前端面经】面试:最快最全面的渗透应聘者真实水平
- D2007从win7升级到win10下的莫名其妙问题。
- 微型计算机中什么是小随机储存器,随机存取存储器
- 移动OA,颠覆企业传统助力办公更高效
- python 列表乘一个数字
- 2225. 找出输掉零场或一场比赛的玩家
- Adobe Flashplayer orHTML5 Browser with WebGL or CSS3D support required 解决方案
- 计算机专业写作与沟通大作业,四川电大5110047 计算机办公软件应用第1次形考作业答案...