分形之城 - 题解

news/2024/11/16 15:49:29/文章来源:https://www.cnblogs.com/jerrycyx/p/18327782

分形之城

时间限制:C/C++ 1000MS,其他语言 2000MS
内存限制:C/C++ 256MB,其他语言 512MB

描述

城市的规划在城市建设中是个大问题。
不幸的是,很多城市在开始建设的时候并没有很好的规划,城市规模扩大之后规划不合理的问题就开始显现。
而这座名为 Fractal 的城市设想了这样的一个规划方案,如下图所示:
image
当城区规模扩大之后,Fractal 的解决方案是把和原来城区结构一样的区域按照图中的方式建设在城市周围,提升城市的等级。
对于任意等级的城市,我们把正方形街区从左上角开始按照道路标号。
虽然这个方案很烂,Fractal 规划部门的人员还是想知道,如果城市发展到了等级 \(N\),编号为 \(A\)\(B\) 的两个街区的直线距离是多少。
街区的距离指的是街区的中心点之间的距离,每个街区都是边长为 \(10\) 米的正方形。

输入描述

第一行输入正整数 \(n\),表示测试数据的数目。
以下 \(n\) 行,输入 \(n\) 组测试数据,每组一行。
每组数据包括三个整数 \(N,A,B\),表示城市等级以及两个街区的编号,整数之间用空格隔开。

输出描述

一共输出 \(n\) 行数据,每行对应一组测试数据的输出结果,结果四舍五入到整数。

用例输入 1

3 
1 1 2 
2 16 1 
3 4 33 

用例输出 1

10 
30 
50 

提示

\(1≤N≤31\)
\(1≤A,B≤2^{2N}\)
\(1≤n≤1000\)

代码

#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;inline long long read()
{long long x=0; int w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-') w=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^'0');ch=getchar();}return x*w;
}int T;pair<int,int> find(long long x,int lv)
{if(!lv) return make_pair(0,0);long long size=1ll<<((lv<<1)-2),len=1ll<<(lv-1);if(x<=size)			//I{pair<int,int> res=find(x,lv-1);return make_pair(res.second,res.first);}else if(x<=size*2)	//II{pair<int,int> res=find(x-size,lv-1);return make_pair(res.first,res.second+len);}else if(x<=size*3)	//III{pair<int,int> res=find(x-size*2,lv-1);return make_pair(res.first+len,res.second+len);}else				//IV{pair<int,int> res=find(x-size*3,lv-1);return make_pair(2*len-1-res.second,len-1-res.first);}
}double distance(pair<int,int> a,pair<int,int> b)
{long long disx=a.first-b.first,disy=a.second-b.second;return sqrt(disx*disx+disy*disy);
}int main()
{T=read();while(T--){long long n=read(),a=read(),b=read();pair<int,int> posa=find(a,n),posb=find(b,n);printf("%.0lf\n",distance(posa,posb)*10.0);}return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开天辟地,环境安装(cangjie篇)

cangjie,尝鲜日记需求:安装好环境,输出hello world(程序员金字招牌,哈哈~)开整!1 下载SDK 由于官方关闭了开放下载入口,需要走申请、审核机制。然后gitcode平台,下载安装。我们这里就不方便提供下载地址了。目前,我安装的0.53.4b版本。如图:下载步骤就不赘述了,下一…

pycharm远程调试一直卡着(正在收集数据),查看变量时一直显示collecting data并报错Timeout waiting for response且看不到任何内容

1. 问题描述如题,在用PyCharm进行Python代码调试查看具体变量时,会随机遇到一直显示collecting data,到最后报错Timeout waiting for response,在界面中看不到变量内部的内容,如下图所示:2. 解决办法在PyCharm,打开Setting界面,在如下设置项中勾选“Gevent compatible”…

python错题记录:布尔运算与逻辑值检测

一 前言 环境:python 3.10 win10 二 布尔运算与逻辑值检测 1 案例 案例1如上,在布尔运算时,有些时候代码只会运算前面的一部分,剩下的部分根本不会运算。以前在练习算法代码时,就利用这个规则来减少代码的工作量 案例2如上,之前好长一段时间,上面的布尔运算总是让我感…

霍夫(Hough)直线变换(直线检测)

0 原理霍夫变换在检测各种形状的的技术中非常流行,如果你要检测的形状可以用数学表达式写出,你就可以是使用霍夫变换检测它。及时要检测的形状存在一点破坏或者扭曲也可以使用。我们下面就看看如何使用霍夫变换检测直线。 首先将一条直线用一个点表示,这样用一个点表示直线上…

使用浏览器开发人员工具抓取Windows聚焦桌面壁纸

最近发现Windows聚焦桌面壁纸质量都挺高的,比如下图,无奈图片不给保存。所有只有想办法把他爬下来。没有这个功能的可以在桌面右击鼠标,选择个性化,背景,Windows聚焦这样桌面上就出现一个图标右击这个图标,出现一个弹窗,选择“了解详情”就打开一个网页,我们按F12打开开…

编程语言之泛型困境

困境泛型不可能三角 泛型困境的本质是,关于泛型,你想要缓慢的程序员、缓慢的编译器和臃肿的二进制文件,还是缓慢的执行时间。简单来说就是:要么苦了程序员,要么苦了编绎器,要么降低运行时效率。 不同语言对泛型的考量 以C、C++和Java为例,它们在泛型的设计上有着不同考量…

CMake学习(一)

CMake学习(一) 1、简介CMake是一个强大的软件构建系统,可以用简单的语句来描述所有平台的安装(编译过程) 可以编译源代码、制作程序库、产生适配器(wrapper)、还可以用任意的顺序建构执行档https://cmake.org/2、构建基础项目 最基础的 CMake 项目是由单个源代码文件构建的…

[rCore学习笔记 018]实现特权级的切换

写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 本节内容 因为risc-v存在硬件特权级机制,我们又要实现一个可以使得应用程序工作在用户级,使得操作系统工作在特权级.原因是要保证…

二分搜索

二分搜索 2024年7月25日 21:27正常二分思想 重点是遇到不同的数怎么定边界,怎么记录答案。 特殊情况:没有数字或者只有一个数,直接判断返回 先定一个ans=-1用于记录答案,l、r记录左右边界 看中点数值,比target小,说明比target的的数字在右边,l = mid+1 比target大,ans=…

博客园T恤 TALK IS CHEAP 系列新疆长绒棉款上架预售

这一款与第一款 TALK IS CHEAP 系列T恤用的是同样的设计,主要区别是面料不同,这款用的是新疆长绒棉,第一款用的是精梳棉,个人感觉新疆长绒棉跟舒适一些,另外版型稍有区别,这款衣长更长一些这一款与第一款 TALK IS CHEAP 系列T恤用的是同样的设计,主要区别是面料不同,这…

Easy521和Easy521的EIP通讯

1, 从站添加流程 2, 本机作为从站时的配置

如何选择合适的Bug跟踪软件?终极指南

国内外主流的10款BUG管理软件对比:PingCode、Worktile、禅道(ZenTao)、Bugzilla、Tapd、CODING、Teambition、Testin、Tower、乐道。在软件开发的世界里,管理和跟踪Bug是一个让许多开发者头疼的问题。选择一个合适的Bug管理工具不仅能提升开发效率,还能大大减少因错误管理…