Fractal-Streets

news2024/12/22 19:50:48

title: Fractal Streets
date: 2023-12-13 14:48:45
tags: 分形
categories: 算法进阶指南

题目大意

将原来的城市复制一遍放在原城市的上方,将原城市顺时针90°放在原城市的左上方,将逆时针90°后的城市放在原城市的左边,然后用道路将四部分链接起来,反复进行相同操作。
在这里插入图片描述

解题思路

这是著名的通过一定规律无限包含自身的“分形”图。为了方便计算,我们把标号从 0 0 0 开始
解题关键就是,求编号为 M M M 的房屋在 N N N 级城市的位置,把问题转化为 calc(N,M),因此改题目转化为求 c a l c ( N , A ) calc(N,A) calc(N,A) c a l c ( N , B ) calc(N,B) calc(N,B) 的距离。
在求解 c a l c ( N , M ) calc(N,M) calc(N,M) 时,因为 N − 1 N - 1 N1 级城市有 2 2 ∗ N − 2 2 ^ {2 * N - 2} 22N2 座房屋,所以我们先求解 c a l c ( N − 1 , M m o d 2 2 ∗ N − 2 ) calc(N - 1,M mod 2 ^ {2 * N - 2}) calc(N1,Mmod22N2),根据房屋编号 M 与 该级数的房屋总数确定编号上下左右位置。
在这里插入图片描述

代码实现

#include<bits/stdc++.h>

using namespace std;

typedef long long LL;

const int N = 1314;

const int MOD = 9901;

typedef pair<LL,LL> PII;

PII calc(LL n,LL m)
{
	if(n == 0) return make_pair(0,0);
	LL len = 1ll << (n - 1),cnt = 1ll << (2 * n - 2);//每一级的半长和多少个 1 级的 
	PII pos = calc(n - 1,m % cnt);
	LL x = pos.first, y = pos.second;
	LL z = m / cnt;
	if(z == 0) return make_pair(y,x);
	else if(z == 1) return make_pair(x,y + len);
	else if(z == 2) return make_pair(x + len,y + len);
	else  return make_pair(2 * len - y - 1,len - x - 1);
}
int main()
{
	int t; cin >> t;
	while(t --)
	{
		LL N,A,B;
		cin >> N >> A >> B;
		PII a = calc(N,A - 1),b = calc(N,B - 1);
		LL x = a.first - b.first, y = a.second - b.second;
		cout << fixed << setprecision(0) << sqrt(x * x + y * y) * 10 << endl; 
	} 
}

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

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

相关文章

美赛F奖经验分享,干货满满,快来查收!

2023年美赛结果出来之后&#xff0c;陆续有人给我发私信求经验&#xff0c;跟一些同学交流后我发现&#xff0c;很多人其实对美赛了解程度很少。我借此机会介绍一下美赛&#xff0c;并分享一下获奖经验。我的内容主要包括以下几个部分&#xff1a;美赛是什么、得奖分布、选题建…

AI全栈大模型工程师(二十六)如何选择 GPU 和云服务厂商

&#x1f4a1; 这节课会带给你 如何选择 GPU 和云服务厂商&#xff0c;追求最高性价比 如何部署自己 fine-tune 的模型&#xff0c;向业务提供高可用推理服务 如何控制内容安全&#xff0c;做好算法备案&#xff0c;确保合规 开始上课&#xff01; 硬件选型 当我们为模型训练及…

从传统型数据库到非关系型数据库

一 什么是数据库 数据库顾名思义保存数据的仓库&#xff0c;其本质是一个具有数据存储功能的复杂系统软件&#xff0c;数据库最终把数据保存在计算机硬盘&#xff0c;但数据库并不是直接读写数据在硬盘&#xff0c;而是中间隔了一层操作系统&#xff0c;通过文件系统把数据保存…

挺进云存储,天翼云全新一代XSSD勇立潮头

引言&#xff1a;自研高性能分布式存储引擎LAVA&#xff0c;实现云硬盘持续创新获得新突。 【全球云观察 &#xff5c; 科技热点关注】 作为算力基础设施的基石&#xff0c;云存储的发展一直备受公有云厂商所重视&#xff0c;对拉动云厂商营收规模带来重要价值&#xff0c;就…

用python打印出菱形图案

你可以使用Python编写一个简单的函数来打印菱形图案。下面是一个例子&#xff0c;这个函数接受一个参数n&#xff0c;表示菱形的高度&#xff0c;然后打印出一个菱形图案&#xff1a; def print_diamond(n): # 上半部分 for i in range(n): print(" " …

云智融合浪潮之下,中国操作系统逆势向上

自从2020年12月CentOS项目宣布 CentOS 8于2021年12月31日停止维护和更新&#xff0c;CentOS 7也将于2024年6月30日停服&#xff0c;就掀起了中国操作系统的替换浪潮。作为基于Red Hat Enterprise Linux的开源操作系统&#xff0c;CentOS广泛应用于企业级服务器和云计算平台。而…

Linux——MySQL数据库系统()

一、访问MySQL数据库 MySQL数据库系统也是一个典型的C/S(客户端/服务器&#xff09;架构的应用&#xff0c;要访问MySQL数据库需要使用专门的客户端软件。在Linux系统中&#xff0c;最简单、易用的MySQL客户端软件是其自带的mysql命令工具。 1、登录到MySQL服务器经过安装后的初…

AdobeXD 是什么?你想知道的都在这里!

AdobeXD 是一个功能强大的原型创建工具。使用这个工具&#xff0c;你可以更快地开发你的设计。让你的项目有条不紊&#xff0c;消除拖延工作流程的重复任务和单调任务。快速与开发团队分享详细的设计规范。使用 AdobeXD 能够把创意迅速转化为原型&#xff0c;创建、构建、共享原…

结合eNSP实验讲VLAN,让理论生动

目录 一、VLAN的简介 1、定义 2、产生的原因--解决传统以太网的问题 3、VLAN的作用 4、VLAN数据帧格式--插入VLAN标签 5、VLAN的种类 5.1静态VLAN--常用 5.1.1静态vlan的范围 5.2动态VLAN 6、VLAN的三种端口类型 6.1Access接口 6.2Trunk接口 6.3Hybrid接口 二、配置…

利用机器学习实现客户细分的实战

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 今天来学习一下机器学习实战中的案例&#xff1a;创建客户细分&#xff0c;在此过程中也会补充很多重要的知识点&#xff0c;欢迎大家一起前来探讨学习~ 一、导入数据 在此项目中&#xff0c;我们使用 UCI 机器学习代码库…

MATLAB基础运算

矩阵和数字相乘 就是矩阵里面每个元素跟这个数字乘一遍&#xff0c;无论是点乘还是叉乘&#xff0c;对于这个都一样。 >> Aones(3) A 1 1 11 1 11 1 1 >> 10*A ans 10 10 1010 10 1010 10 10 矩阵和矩阵叉乘 能不能相…

竞赛保研 python 爬虫与协同过滤的新闻推荐系统

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; python 爬虫与协同过滤的新闻推荐系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 该项目较为新颖&…

「C++」内存管理

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;C启航 &#x1f387;欢迎点赞收藏加关注哦&#xff01; 文章目录 &#x1f349;内存分布&#x1f349;关键字new&#x1f349;关键字delete&#x1f349;new和delete的封装实现&#x1f349;总…

kafka 详细介绍

目录 前言 分布式架构&#xff1a; 消息发布-订阅模型&#xff1a; 持久性存储&#xff1a; 分区和副本&#xff1a; 水平扩展&#xff1a; 高性能&#xff1a; 生态系统&#xff1a; 我的其他博客 前言 Kafka 是由 Apache 软件基金会开发的一种开源流处理平台&#xf…

基于Java SSM框架实现沙县小吃门店连锁点餐订餐系统项目【项目源码+论文说明】

基于java的SSM框架实现县小吃门店连锁点餐订餐系统演示 摘要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 沙县小吃点餐系统&#xff0c;主要的模块包括实现管理员&#xff1b;个人中心、用户管…

视频推拉流平台EasyDSS点播文件播放请求添加token验证的实现方法

EasyDSS视频直播点播平台可提供一站式的视频推拉流、转码、点播、直播、播放H.265编码视频等服务&#xff0c;搭配RTMP高清摄像头使用&#xff0c;可将设备的实时流推送到平台上&#xff0c;实现无人机视频推流直播等应用。今天我们来介绍下EasyDSS系统点播文件播放请求添加tok…

实战章节:在Linux上部署各类软件

详细资料见文章的资源绑定 一、前言 1.1 为什么学习各类软件在Linux上的部署 在前面&#xff0c;我们学习了许多的Linux命令和高级技巧&#xff0c;这些知识点比较零散&#xff0c;同学们跟随着课程的内容进行练习虽然可以基础掌握这些命令和技巧的使用&#xff0c;但是并没…

TDengine Kafka Connector将 Kafka 中指定 topic 的数据(批量或实时)同步到 TDengine

教程放在这里&#xff1a;TDengine Java Connector&#xff0c;官方文档已经写的很清晰了&#xff0c;不再赘述。 这里记录一下踩坑&#xff1a; 1.报错 java.lang.UnsatisfiedLinkError: no taos in java.library.pathat java.lang.ClassLoader.loadLibrary(ClassLoader.j…

【Geoserver】将geoserver迁移到jetty的发行包中

之前讲了在Geosever的二进制发行包中升级jetty的内容&#xff0c;我测试之后发现有些问题&#xff0c;本地运行可能没有问题&#xff0c;但是在linux上运行报错了。 于是我想着换个思路好了&#xff0c;总是想着将Geosever中的jetty包替换掉&#xff0c;干脆反过来&#xff0c;…