很多游戏都有打怪升级的环节,玩家需要打败一系列怪兽去赢取成就和徽章。这里我们考虑一种简单的打怪升级游戏,游戏规则是,给定有 N 个堡垒的地图,堡垒之间有道路相连,每条道路上有一只怪兽把守。怪兽本身有能量,手里的武器有价值。打败怪兽需要的能量等于怪兽本身的能量,而怪兽一旦被打败,武器就归玩家所有 —— 当然缴获的武器价值越高,玩家就越开心。

你的任务有两件:

帮助玩家确定一个最合算的空降位置,即空降到地图中的某个堡垒,使得玩家从这个空降点出发,到攻下最难攻克(即耗费能量最多)的那个堡垒所需要的能量最小;
从这个空降点出发,帮助玩家找到攻克任意一个其想要攻克的堡垒的最省能量的路径。如果这种路径不唯一,则选择沿途缴获武器总价值最高的解,题目保证这种解是唯一的。

输入格式:

输入第一行给出两个正整数 N (≤1000) 和 M,其中 N 是堡垒总数,M 是怪兽总数。为简单起见,我们将堡垒从 1 到 N 编号。随后 M 行,第 i 行给出了第 i 只怪兽的信息,格式如下:

B1 B2 怪兽能量 武器价值
其中 B1 和 B2 是怪兽把守的道路两端的堡垒编号。题目保证每对堡垒之间只有一只怪兽把守,并且 怪兽能量 和 武器价值 都是不超过 100 的正整数。

再后面是一个正整数 K(≤N)和玩家想要攻克的 K 个目标堡垒的编号。

输出格式:

首先在一行中输出玩家空降的堡垒编号 B0。如果有多种可能,则输出编号最小的那个。

随后依次为玩家想要攻克的每个堡垒 B 推荐最省能量的攻克路径,并列出需要耗费的能量值和沿途缴获武器的总价值。注意如果最省力的路径不唯一,则选择沿途缴获武器总价值最高的解。格式为:

B0->途经堡垒1->…->B
总耗费能量 武器总价值

输入样例:

6 12
1 2 10 5
2 3 16 20
3 1 4 2
2 4 20 22
4 5 2 2
5 3 12 6
4 6 8 5
6 5 10 5
6 1 20 25
1 5 8 5
2 5 2 1
2 6 8 5
4
2 3 6 5

输出样例:

5
5->2
2 1
5->1->3
12 7
5->4->6
10 7
5
0 0

和旅游规划很像,不同的是需要提前求出来起点。
这次用floy作的,感觉还不错。

#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std;
using pii = pair<int, int>;
const long long INF = 1e8;
const int n = 1010;int N, M;
pii rode[n][n];
int parent[n][n];
void init(int N)
{for (int i = 1; i <= N; i++)for (int j = 1; j <= N; j++){parent[i][j] = j;if (i == j)rode[i][0] = {0, 0};elserode[i][j] = {INF, 0};}
}
void floyd()
{for (int k = 1; k <= N; k++)for (int i = 1; i <= N; i++)for (int j = 1; j <= N; j++){if (rode[i][k].first + rode[k][j].first < rode[i][j].first ||(rode[i][k].first + rode[k][j].first == rode[i][j].first &&rode[i][k].second + rode[k][j].second > rode[i][j].second)){// cout  << j << " -- " << k << endl;rode[i][j].first = rode[i][k].first + rode[k][j].first;rode[i][j].second = rode[i][k].second + rode[k][j].second;parent[i][j] = parent[i][k];}}
}
int s;
int main()
{cin >> N >> M;init(N);while (M--){int x, y, d, s;cin >> x >> y >> d >> s;rode[x][y] = {d, s};rode[y][x] = {d, s};}floyd();cin >> M;vector<int> v(M);for (auto &e : v)cin >> e;int mint = INF;for (int i = 1; i <= N; i++){int e = i;int maxt = 0;for (int x = 1; x <= N; x++)maxt = max(maxt, rode[e][x].first);if (maxt < mint)mint = maxt, s = e;}cout << s << endl;for (auto &e : v){int i = s;while (i != e){cout << i;cout << "->";i = parent[i][e];}cout << i;cout << endl;cout << rode[s][e].first << " " << rode[s][e].second << endl;}return 0;
}

打怪升级-世界机器人开发者大赛相关推荐

  1. 2022 RoboCom 世界机器人开发者大赛-本科组(省赛)挨打记录

    总结: 在pintia平台做题千万得早点做会的题,要不然等到最后全是疯狂提交撞数据骗分的,最后五分钟,提交一次题要等前面6900多人,根本来不及. 多看板子少摸鱼 学校实验室是真滴爽 做题连接 登录签 ...

  2. 2021 RoboCom 世界机器人开发者大赛-本科组(初赛)【完结】

    看群友在水这个比赛玩玩,于是也去打了一下重现赛. 事实证明,群友轻松AK,而我只会暴力. 总的难度就是PAT甲的难度吧,数据很不错,恶心的一批. 补题完结 2021RoboCom机器人开发者大赛官方题 ...

  3. 2021 RoboCom 世界机器人开发者大赛-本科组(初赛)java题解

    目录 7-1 懂的都懂 (20分) 输入格式: 输出格式: 输入样例: 输出样例: 解析: 代码: 7-2 芬兰木棋 (25分) 输入格式: 输出格式: 输入样例: 输出样例: 解析: 代码: 7-3 ...

  4. 2021 RoboCom 世界机器人开发者大赛-本科组(初赛)题解

    7-1 懂的都懂 (20 分) 众所周知,在互联网上有很多话是不好直接说出来的,不过一些模糊的图片仍然能让网友看懂你在说什么.然而对这种言论依然一定要出重拳,所以请你实现一个简单的匹配算法. 现在我们 ...

  5. 2021 RoboCom 世界机器人开发者大赛-本科组(初赛)!带注释!题解

    文章目录 7-1 懂的都懂 输入格式 输出格式 输入样例 输出样例 解题思路 解题代码 7-2 芬兰木棋 输入格式 输出格式 输入样例 输出样例 解题思路 解题代码 7-3 打怪升级 输入格式 输出格 ...

  6. 2021 RoboCom 世界机器人开发者大赛-本科组(初赛)

    文章目录 比赛介绍 7-1 懂的都懂(20分) 7-2 芬兰木棋(25分) 7-3 打怪升级(25分) 7-4 疫情防控(30分) 比赛介绍 比赛信息 比赛官网:https://www.robocom ...

  7. 2022 RoboCom 世界机器人开发者大赛-高职组(省赛)

    RC-v1 您好呀 分数 5 本届比赛的主题是"智能照护",那么就请你首先为智能照护机器人写一个最简单的问候程序 -- 无论遇见谁,首先说一句"您好呀~". 输 ...

  8. 2021 RoboCom 世界机器人开发者大赛-本科组(复赛)

    文章目录 7-1 冒险者分队 20 7-2 拼题A打卡奖励 25 7-3 快递装箱 25 7-4 塔防游戏 30 7-1 冒险者分队 20 7-1 冒险者分队 分数 20 作者 DAI, Longao ...

  9. 2022 RoboCom 世界机器人开发者大赛-本科组(省赛)-- 第三题 跑团机器人 (已完结)

    其它题目 题目 RC-u3 跑团机器人 在桌面角色扮演游戏(TRPG,俗称"跑团")中,玩家需要掷出若干个骰子,根据掷出的结果推进游戏进度.在线上同样可以跑团,方法是由玩家们向机器 ...

最新文章

  1. 轻松入门模型转换和可视化
  2. 协议地址结构_通信之路——用最简洁的文字告诉你互联网协议TCP/IP
  3. C++中的友元函数和友元类
  4. Java学习笔记之 IO包 字符流
  5. 三位对我影响最深的老师
  6. vue2.0桌面端框架_vue-element-admin
  7. Python No Module name cv2解决方案
  8. JSP中鼠标禁用代码
  9. signature=efaf25d07c6ea03d7552906c0caee5a8,幼児の認知発達における関係把握の問題
  10. GoogleTest测试C++代码
  11. java-设计模式(行为型)-【命令模式】
  12. Android 源码 分析
  13. 利用Minst数据集训练原生GAN网络
  14. 2020年三非上岸北邮计算机院考研经验贴(励志)
  15. 软件需求工程 高校教学平台 项目总体计划
  16. 用matlab求摆线,求由摆线x=a(t-sint),y=a(1-cost)的一拱(0≦t≦2π)与x轴所围成的图形面积...
  17. Mysql基础篇(1)—— 基础概念、DML基本语法和表连接
  18. axis调用java实现webservice实例
  19. mysql 微信用户昵称 emoji 完整保存
  20. unity中使用render texture全黑的可能解决方案

热门文章

  1. arduino红外接受
  2. struct inode
  3. 慧聪网深陷破产风波?
  4. Hadoop核心介绍课程笔记
  5. Python+Vue计算机毕业设计儿童照相服务管理系统的开发pp2vk(程序+LW+源码+部署)
  6. python中rstrip 函数_Python中字符串之rstrip()方法有哪些功能?
  7. 三层交换机与路由互联配置(华为设备)
  8. c语言图形左右对称,抛物线是对称的,但为什么画出来两边不一样高?
  9. 地铁隧道维修检测三维扫描_隧道维修3D扫描_隧道3D激光扫描建模
  10. 历史上的今天:Google 之母出生;同一天诞生的两位图灵奖先驱