2022Robocom国赛-u2 女王的大敕令

news2024/9/23 1:34:25

副本是游戏里的一个特色玩法,主要为玩家带来装备、道具、游戏资源的产出,满足玩家的游戏进程。

在 MMORPG《最终幻想14》里,有一个攻略人数最大达到 48 人的副本“零式贡希尔德神庙”,其中守关 BOSS “天佑女王”有一个很有趣的技能:“女王的大敕令”。

技能在一个 5×5 的棋盘上展开。每位玩家根据给定的两个步长,从某个方格出发,在棋盘上先走 D1​ 步,再走 D2​ 步。其中“步长”指的是曼哈顿距离,即:设两个方格的坐标分别为 (Xi​,Yi​) 以及 (Xj​,Yj​),则这两个方格的曼哈顿距离 D=∣Xi​−Xj​∣+∣Yi​−Yj​∣。

例如下图中的 A 点与 B 点的曼哈顿距离为 5:

image.png

技能开始时,场地外围会出现 4 只小怪,东南西北(即棋盘的右、下、左、上)方向各出现一只小怪,且小怪一定出现在某行或某列对应的位置上。第 i 只小怪会顺时针朝固定方向移动 ni​ 步(题目保证不会移出界,即移动后仍然在对应着某行/某列的位置上),且:

  • 北边的小怪固定向右移动;
  • 东边的小怪固定向下移动;
  • 南边的小怪固定向左移动;
  • 西边的小怪固定向上移动。

小怪出现后,棋盘上还会出现一个发光的格子,这是玩家移动的目标点,如图所示:

image.png

玩家必须在不被小怪杀死的前提下,按规定步长,用两个回合到达目标点。技能流程如下:

1、玩家先选择一个起始方格;

2、东、西两侧的小怪开始按照固定方向移动,移动完毕后 4 只小怪会同时开展攻击,其中东、西两侧的小怪攻击自己所对应的一整行,南、北两侧的小怪攻击自己所对应的一整列。玩家若处在攻击区内则任务失败。

3、玩家移动 D1​ 步,到达某个方格;

4、南、北两侧的小怪开始按照固定方向移动,移动完毕后 4 只小怪会同时开展攻击,同第 2 步;

5、玩家移动 D2​ 步,此时必须到达目标点,否则任务失败。

以下是上面的 4 只小怪都移动后的攻击范围的示意图:

image.png

给定小怪起始位置以及移动步数 ni​ 和目标点位置,请输出所有安全的移动方案,包括起始点以及第一次移动的目的地。

输入格式:

输入第一行是四个数 C1​,C2​,R1​,R2​,分别表示:

  • 北边(上面)的小怪 1 在第 C1​ 列的位置上;
  • 南边(下面)的小怪 2 在第 C2​ 列的位置上;
  • 西边(左边)的小怪 3 在第 R1​ 行的位置上;
  • 东边(右边)的小怪 4 在第 R2​ 行的位置上。

输入第二行是四个数 ni​(i=1,⋯,4),按照上面的顺序给出小怪移动的步数,保证小怪移动后仍然处于某行或某列对应的位置上。

输入第三行是四个数 row,col,D1​,D2​,依次表示目标点的位置,以及玩家要走的两个步长。这里某方格的“位置” (row,col) 指的是该方格的行号、列号组成的二元组。

我们假设左上角的方格位置为 (1, 1)。

输出格式:

输出安全移动的方案,方案由两个位置共四个数组成,前两个数为初始选择的方格的位置,后两个数为第一次停留的位置。

对于多个方案的情况,先按初始方格位置从小到大输出,初始方格相同时按第一次停留位置从小到大输出。一个坐标 (ri​,ci​) 比另一个坐标 (rj​,cj​) 小,当且仅当 ri​<rj​,或 ri​=rj​ 的同时有 ci​<cj​。

输入样例:

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

输出样例:

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

解析:

        从最终位置往前执行,每次遍历所有点即可。

代码:

#include<bits/stdc++.h>
using namespace std;
int c1,c2,r1,r2;
int n1,n2,n3,n4;
int row,col,d1,d2;
struct node{
	int x1,y1,x2,y2;
};
vector<pair<int,int>>a;
vector<node>res;
bool cmp(node a,node b){
	return a.x1==b.x1?a.y1==b.y1?a.x2==b.x2?a.y2<b.y2:a.x2<b.x2:a.y1<b.y1:a.x1<b.x1;
}
int main(){
	cin>>c1>>c2>>r1>>r2;
	cin>>n1>>n2>>n3>>n4;
	cin>>row>>col>>d1>>d2;
	
	c1+=n1;
	c2-=n2;
	r1-=n3;
	r2+=n4;
	
	for(int i=1;i<=5;i++){
		for(int j=1;j<=5;j++){
			if(abs(i-row)+abs(j-col)==d2){
				if(i==r1||i==r2) continue;
				if(j==c1||j==c2) continue;
				a.push_back({i,j});
			}
		}
	}
	
	c1-=n1;
	c2+=n2;
	
	for(int k=0;k<a.size();k++){
		int x=a[k].first;
		int y=a[k].second;
		for(int i=1;i<=5;i++){
			for(int j=1;j<=5;j++){
				if(abs(i-x)+abs(j-y)==d1){
					if(i==r1||i==r2) continue;
					if(j==c1||j==c2) continue;
					res.push_back({i,j,x,y});
				}
			}
		}
	}
	
	sort(res.begin(),res.end(),cmp);
	
	for(int i=0;i<res.size();i++){
		cout<<res[i].x1<<" "<<res[i].y1<<" "<<res[i].x2<<" "<<res[i].y2;
		if(i!=res.size()-1) cout<<endl;
	}
	
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/759106.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图形编辑器开发:一些会用到的简单几何算法

大家好&#xff0c;我是前端西瓜哥。 开发图形编辑器&#xff0c;你会经常要解决一些算法问题。本文盘点一些我开发图形编辑器时遇到的简单几何算法问题。 矩形碰撞检测 判断两个矩形是否发生碰撞&#xff08;或者说相交&#xff09;&#xff0c;即两个矩形有重合的区域。 …

C生万物 | 程序员必备实用调试技巧分享

一起来学习调试~ 一、前言二、什么是Bug&#xff1f;三、调试是什么&#xff1f;有多重要&#xff1f;1、导学引入2、调试的基本步骤3、Debug和Release的介绍 四、Windows环境下VS调试介绍1、调试环境的准备2、学会快捷键3、调试的时候查看程序当前信息3.1 查看临时变量的值3.2…

基于SSM的购物商城系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

SpringBoot中通过自定义Jackson注解实现接口返回数据脱敏

场景 SpringBoot中整合Sharding Sphere实现数据加解密/数据脱敏/数据库密文&#xff0c;查询明文&#xff1a; SpringBoot中整合Sharding Sphere实现数据加解密/数据脱敏/数据库密文&#xff0c;查询明文_霸道流氓气质的博客-CSDN博客 上面讲的是数据库中存储密文&#xff0…

音乐格式转换mp3软件有哪些?分享三个方法给大家!

要将音乐文件转换为MP3格式的情况&#xff0c;以便在各种设备上播放。为了帮助大家完成这个任务&#xff0c;下面将分享三种实用的方法和工具&#xff0c;其中方法一是使用记灵在线工具进行音乐格式转换。无论您是音乐爱好者还是需要将音频文件转换为MP3格式的专业人士&#xf…

障碍物距离显示需求功能定义

1. 需求 来源 整车功能定义清单中SAF-10 -06 条需求 。泊车视觉辅助 &#xff0c;360全景 -距离树数值显示时&#xff0c;显示车辆与障碍物的距离数字 。 2. 开发 范围 项目带全景功能的配置&#xff0c;见最新配置表&#xff1a; 3. 功能 定义 在雷达报警激活状态下&#xff0…

SSM入门—Spring框架-IOC简单案例

目录 控制反转&#xff1a;创建对象 基于XML实现 基于注解实现 依赖注入&#xff1a;对象赋值 通过xml注入 控制反转&#xff1a;创建对象 把对象的创建权交给了Spring容器 基于XML实现 1、maven 导入依赖 <!--Maven会自动添加当前jar依赖的其他jar--> <depen…

第一章 数据库的操作

第一章 数据库的操作 一、库的操作1、创建数据库&#xff08;1&#xff09;语法&#xff08;2&#xff09;字符集与校验规则a.定义 &#xff08;3&#xff09;创建不同字符集与校验规则的数据库 2、查看数据库&#xff08;1&#xff09;语法&#xff08;2&#xff09;示例 3、显…

自定义类型——结构体,枚举,联合(详,真的太详了)

一.结构体 1.1什么是结构体&#xff0c;结构体如何声明和定义变量&#xff1f; 结构是一些值的集合&#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量。 struct 变量名 { 不同类型的成员变量&#xff1b; }&#xff1b; 一定要记得在花括号的后面加上分…

5.4 python内置高阶函数之--map、reduce、filter、sorted

高阶函数满足条件&#xff1a;1、 函数名被作为参数传给另外一个函数2、 函数返回值为另外一个函数&#xff08;返回为自己&#xff0c;则为递归&#xff09;一、 高阶函数&#xff1a;map 【 map函数】说明可以去查看源码&#xff0c; 会发现&#xff1a;map的__init__中有两个…

deeplabv3+源码之慢慢解析 第二章datasets文件夹(3)cityscapes.py--Cityscapes类

系列文章目录&#xff08;更新中&#xff09; 第一章deeplabv3源码之慢慢解析 根目录(1)main.py–get_argparser函数 第一章deeplabv3源码之慢慢解析 根目录(2)main.py–get_dataset函数 第一章deeplabv3源码之慢慢解析 根目录(3)main.py–validate函数 第一章deeplabv3源码之…

MyBatis-Plus学习总结

目录 1.MyBatis-Plus介绍 2.第一个MyBatis-Plus程序 3.配置日志输出 4. 主键生成策略 4.1 ID_WORKER -- 雪花算法 4.2 主键生成策略 -- 详情 5. 自动填充 6.MyBatis-Plus的CRUD 6.1 insert -- 插入 6.2 delete -- 删除 6.3 update -- 更新 6.4 select -- 查询 7. …

Nacos报错Could not resolve placeholder ‘order.name‘ in value “${order.name}“怎么解决?

出现这个原因有两个&#xff1a; 1.首先在Nacos配置中心&#xff0c;写入yml配置文件的数据和后端服务在取数据的时候名称不一致 如下图&#xff0c;现在我的配置中心为order-service 看看其中的文件内容信息&#xff1a; 再看看后端是怎么取的&#xff1a; 看出上面错误了吗…

Windows Cluster 投票权问题

在日常运维中&#xff0c;如果你的 Windows Cluster 需要升级、重启、意外宕机、网络中断等&#xff0c;你知道该怎么操作才能保证集群的可用性吗&#xff1f;按什么样的顺序怎样关闭或启动集群节点吗&#xff1f;怎么快速恢复你的集群呢&#xff1f; 接下来&#xff0c;我们就…

【C++ 重要知识点总结】STL字符串向量

字符串、向量和数组 这里讲的是 C中的处理&#xff0c;置于 C 中的字符串向量和数组&#xff0c;可以自己去复习。 1 命名空间的 using 声明 基本使用 //独立使用名字 using namespace::name; //声明空间 using namespace使用规则 头文件中不应包含 using 声明。因为会破坏包…

组合数学相关知识总结(适合复习用)

全排列 例子&#xff1a; n n n 个数取 m m m 个数有序排放 通项公式&#xff1a; A n m ( P n m ) n ∗ ( n − 1 ) ∗ ( n − 2 ) ∗ ⋅ ⋅ ⋅ ∗ ( n − m 1 ) n ! ( n − m ) ! A_n^m(P_n^m)n*(n-1)*(n-2)**(n-m1) \frac{n!}{(n-m)!} Anm​(Pnm​)n∗(n−1)∗(n−2)∗…

[QT编程系列-12]:QT快速学习 - 0 - 主要内容

第0章 主要内容 0.1 QT的主要内容 附录&#xff1a; Qt 是一个功能强大的应用程序开发框架&#xff0c;涵盖了广泛的知识点。以下是一些常见的 Qt 知识点&#xff1a; 基本概念和特性&#xff1a;了解 Qt 的基本概念&#xff0c;如信号和槽、事件处理、对象模型、元对象系统等…

Python基础合集 练习27 (turtle函数使用)

import turtle as t 画笔控制工具 t.penup() 表示画笔抬起 海龟在天上飞 不能直接形成图形 t.pendown() 画笔落下 海龟降下来 t.pensize(15) 也可以用 t.width() 画笔宽度 t.pencolor(“red”) 画笔颜色 为颜色字符串或rgb值 运动控制函数 控制行进方向、走曲线或…

二进制文件的Python写入

二进制文件的Python编写 这么基础的东西&#xff0c;必然用内置的就好 二进制文件的Python读写 重要提示 p.s. 1 >>> bHello World.decode() "Hello World" True >>> example import struct with open(binary_file.bin, wb) as file:data b…

【cfengDB】自己实现数据库第0节 ---整体介绍及事务管理层实现

LearnProj 内容管理 MySQL系统结构一条SQL执行流程 cfengDB整体结构事务管理TM模块TID文件规则定义文件读写 -- NIORandomAccessFile、FileChannel、ByteBuffer接口实现文件合法检测begin()commit(tid)rollback(tid)tid文件创建 本文作为数工底层的项目CfengDB开始篇章&#xf…