Acwing_98

news2024/12/24 8:25:57

题目链接

考察知识点: 坐标变换、递归、分治。


核心问题:计算出点的坐标。

策略是递归算出子图形中的坐标,再进行平移得到当前图形中的坐标。

采用下图方式建立坐标系:原点在中心。

在这里插入图片描述

前置知识:

( x , y ) (x,y) (x,y) 逆时针旋转 θ \theta θ 角度,坐标为 ( x cos ⁡ θ − y sin ⁡ θ , x sin ⁡ θ − y cos ⁡ θ ) (x\cos\theta-y\sin\theta,x\sin\theta-y\cos\theta) (xcosθysinθ,xsinθycosθ)

n n n 为等级, m m m 为在等级为 n n n 时的编号。

单 位 长 度 = 2 n 单位长度=2^{n} =2n

l e n = 单 位 长 度 2 = 2 n − 1 len = \frac{单位长度}{2} = 2^{n-1} len=2=2n1

m = 4 n = 2 2 n m=4^{n}=2^{2n} m=4n=22n

等级 2 2 2 0 0 0 号图形是由等级 1 1 1 的图形顺时针旋转 90 ° 90° 90° ,再进行 y y y 轴轴对称得到。

假设在等级 1 1 1 中的坐标为 ( x , y ) (x,y) (x,y) ,旋转后为 ( y , − x ) (y,-x) (y,x) ,再进行关于 y y y 轴的轴对称得到 ( − y , − x ) (-y,-x) (y,x)

同理可以得到如下表格:

原始坐标图形0中坐标图形1中坐标图形2中坐标图形3中坐标
( x , y ) (x,y) (x,y) ( − y , − x ) (-y,-x) (y,x) ( x , y ) (x,y) (x,y) ( x , y ) (x,y) (x,y) ( y , x ) (y,x) (y,x)

因为等级 1 1 1 的原点和等级 2 2 2 的原点不重合,所以需要将原点进行平移。

原点平移后得到最终坐标如下:

原始坐标图形0图形1图形2图形3
$(x,y) $ ( − y − l e n , − x + l e n ) (-y-len,-x+len) (ylen,x+len) ( x + l e n , y + l e n ) (x+len,y+len) (x+len,y+len) ( x + l e n , y − l e n ) (x+len,y-len) (x+len,ylen) ( y − l e n , x − l e n ) (y-len,x-len) (ylen,xlen)

我们的编号从 0 0 0 开始,计算坐标注意减一。

时间复杂度: O ( n ) O(n) O(n)

代码

// #pragma GCC optimize(3)
#include <set>
#include <map>
#include <cmath>
#include <stack>
#include <queue>
#include <deque>
#include <cctype>
#include <string>
#include <cstdio>
#include <bitset>
#include <vector>
#include <cstdlib>
#include <cstring>
#include <sstream>
#include <iostream>
#include <algorithm>
// #include <unordered_set>
// #include <unordered_map>
#define endl '\n'
#define x first
#define y second
#define fi first
#define se second
#define PI acos(-1)
// #define PI 3.1415926
#define LL long long
#define INF 0x3f3f3f3f
#define lowbit(x) (-x&x)
#define ULL unsigned LL
#define PLL pair<LL, LL>
#define PIL pair<int, LL>
#define PII pair<int, int>
#define all(x) x.begin(), x.end()
#define mem(a, b) memset(a, b, sizeof a)
#define rev(x) reverse(x.begin(), x.end())
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)

using namespace std;

LL n, a, b;

PLL calc(LL n, LL m) {
	if (n == 0) return {0, 0};
	LL len = 1ll << (n - 1), cnt = 1ll << (2 * n - 2);
	PLL pos = calc(n - 1, m % cnt);
	LL x = pos.x, y = pos.y;
	int z = m / cnt;
	if (z == 0) {
		return {-y - len, -x + len};
	} else if (z == 1) {
		return {x + len, y + len};
	} else if (z == 2) {
		return {x + len, y - len};
	} 
	return {y - len, x - len};
}

void solve() {
	int tt;
    cin >> tt;
    while (tt -- ) {
    	cin >> n >> a >> b;
    	PLL ac = calc(n, a - 1), bc = calc(n, b - 1);
    	double dx = ac.x - bc.x, dy = ac.y - bc.y;    	
    	printf("%.0lf\n", sqrt(dx * dx + dy * dy) * 5);
    }
}

int main() {
	IOS;
	
	solve();
	
	return 0;
}

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

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

相关文章

ResNet18实现——MNIST手写数字识别(突破0.995)

1.简单CNN改进 简单的CNN实现——MNIST手写数字识别 该部分首先对我前面的工作进行了改进&#xff0c;然后以此为基础构建ResNet18去实现MNIST手写数字识别。 1.改进要点&#xff1a; 1.利用nn.Sequential&#xff08;&#xff09;自定义块结构&#xff0c;增加可读性和方便…

Spring - 什么是spring?

好久没更新博客了&#xff0c;今天小更一波。 学习java已经有一段时间了&#xff0c;今天将接触Spring框架技术。 什么是Spring? spring 中文意思就是 春天&#xff0c;实际上spring 是真的给软件行业带来了春天。 使用spring的好处&#xff1f; spring可以解决企业级开发…

眼内衍射透镜的设计与分析

1. 摘要 如今&#xff0c;多焦点眼内透镜移植已广泛用于白内障的治疗。作为其优势特点之一&#xff0c;衍射眼内透镜为病患提供了很好的远近景性能。这种透镜经常在Zemax OpticStudio 中采用binary2面型进行设计。在本示例中&#xff0c;我们阐述了如何将初始设计导入VirtualLa…

嵌入式开发--RS-485通讯的问题

嵌入式开发 RS-485通讯的问题RS-485说明接口芯片硬件连接CubeMX设置代码编写引脚定义使能串口中断函数发送数据接收数据有一个问题&#xff0c;多收了一个数数据线上的波形问题分析问题解决RS-485说明 RS-485一般简称485总线&#xff0c;是最常用的工业总线之一&#xff0c;一…

LeetCode简单题之回环句

题目 句子 是由单个空格分隔的一组单词&#xff0c;且不含前导或尾随空格。 例如&#xff0c;“Hello World”、“HELLO”、“hello world hello world” 都是符合要求的句子。 单词 仅 由大写和小写英文字母组成。且大写和小写字母会视作不同字符。 如果句子满足下述全部条…

从 0 开始学习 Git + GitHub

文章目录一、GitHub创建仓库二、安装Git客户端1、安装2、配置身份三、为Github账户设置SSH key1、生成ssh key2、GitHub 新建SSh key3、测试连接是否成功四、上传本地项目到Github方法一&#xff1a;方法二&#xff1a;master分支到main分支迁移五、Git常用命令git initgit sta…

共享主机安全吗(以及如何保护它)?

共享主机是在一台服务器上存储多个网站的主机。通常&#xff0c;您的资源(例如 CPU、内存、数据库和带宽)会在用户之间溢出。由于它非常适合流量低的网站&#xff0c;且因具成本效益&#xff0c;共享主机相当普遍。如果您是博主和小型企业&#xff0c;则很有可能会选择共享主机…

聊聊我常用的5款动态数据可视化工具

视频当道的时代&#xff0c;数据可视化自然也要动起来。 我常用的动态可视化工具主要有Tableau、Echarts、Flourish、Python这几个&#xff0c;另外一个地图可视化神器kepler.gl&#xff0c;是技术群小伙伴的分享。 这五款可视化工具差异很大&#xff0c;在各自领域都是学霸级…

Grafana 快速配置可视化面板

一、如何快速搭建部署Grafana CSDNhttps://mp.csdn.net/mp_blog/creation/editor/128199952 二、快速配置可视化面板 1.新建数据源 首次新建数据源、首次新建看板 2.选择数据源类型 3.配置数据库 地址、账号、密码 备注&#xff1a;新建的数据源都可以在添加看板作为选项进…

Odoo丨如何在明细行中添加复选框?

最近&#xff0c;在项目实际业务中遇到需要对明细订单添加复选框和按钮进行操作的需求。 起初在拿到需求时&#xff0c;我联想到Odoo默认tree视图是有复选框和操作按钮的功能&#xff0c;于是查看了源码&#xff0c;确认了这个想法。 因为这个是属于字段中one2many 关系属性来…

【DPDK】dpdk样例源码解析之五:dpdk-rss

本篇文章介绍DPDK-RSS相关的功能&#xff0c;RSS是网卡提供的分流机制&#xff0c;简单讲就是一个HASH值&#xff0c;如果使用DPDK收包&#xff0c;开启RSS后&#xff0c;会根据配置项将数据包分流到不同的收包队列&#xff0c;用来是实现负载均衡。 通过DPDK-L3FWD样例&#…

关于Pytorch下载并进行部署

目录 1.关于Pytorch 2.Pytorch环境部署前提条件 3.部署方法 4.测试 1.关于Pytorch PyTorch是一个开源的Python机器学习库&#xff0c;基于Torch&#xff0c;用于计算机视觉、自然语言处理等应用程序。 2017年1月&#xff0c;由Facebook人工智能研究院&#xff08;FAIR&…

数据库设计 ER图

三个基本概念 Entity Entity Set表示一类事物&#xff0c;类似于面向对象中类的概念&#xff0c;而Entity Instance表示一个具体的事物&#xff0c;类似于对象的概念。 Entity中可以有属性(Attribute)&#xff0c;也可以与其他Entity之间存在关系(Relationship)。在设计数据库…

【最新版全插件】多功能同城优选小程序源码

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 1.为本地的线下商家提供线上销售渠道。一直以来本地商品、娱乐、休闲、旅游服务线上购买大家都是以美团为准。近几年来随着微信公众号、小程序的渗透力逐渐加强&#xff0c;越来越多的用…

【深度学习】实验6答案:图像自然语言描述生成(让计算机“看图说话”)

DL_class 学堂在线《深度学习》实验课代码报告&#xff08;其中实验1和实验6有配套PPT&#xff09;&#xff0c;授课老师为胡晓林老师。课程链接&#xff1a;https://www.xuetangx.com/training/DP080910033751/619488?channeli.area.manual_search。 持续更新中。 所有代码…

ElasticSearch实战

一、es集群的搭建 1.集群相关概念 单节点故障问题 单台服务器&#xff0c;往往都有最大的负载能力&#xff0c;超过这个阈值&#xff0c;服务器性能就会大大降低甚至不可用。单点的elasticsearch也是一样那单点的es服务器存在哪些可能出现的问题呢&#xff1f; 单台机器存储…

[附源码]计算机毕业设计基于springboot在线影院系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

ROS MoveIT1(Noetic)安装总结

前言 由于MoveIT2的Humble的教程好多用的还是moveit1的环境&#xff0c;所以又装了Ubutun20.04和ROS1&#xff08;Noetic&#xff09;。【2022年12月6日】 环境 系统&#xff1a;Ubutun20.04LTS Ros&#xff1a;Noetic 虚拟机&#xff1a;VMware 安装 ROS Noetic 安装教程…

【微信小程序】canvasToTempFilePath遇到的问题

在微信小程序开发中&#xff0c;经常需要将绘制好的canvas保存到本地&#xff0c;这就需要调用canvasToTempFilePath将canvas画布转为本地临时文件。遇到过的问题如下&#xff1a; 1.create bitmap failed 2.fail canvas is empty 这个问题就是canvas还没画为空拿不到转化的临…

Eclipse+Maven+Tomcat 集成开发环境配置

在Eclipse中创建的Dynamic Web Project 类型的Web 项目&#xff0c; 通过Run As -> Run on Server 可以添加本地安装的Tomcat&#xff0c;在Eclipse 中启动Tomcat 进行整合开发。 但是如果创建的是Maven类型的项目&#xff0c;如果没有导入额外的包还正常&#xff0c; 但是…