Fractal Streets||分形之城
这道题…蛮难的…
今天看到一句话,特别适合做这道题
文章目录
- 问题描述
- 思考
- AC代码:
问题描述
城市的规划在城市建设中是个大问题。
不幸的是,很多城市在开始建设的时候并没有很好的规划,城市规模扩大之后规划不合理的问题就开始显现。
而这座名为 Fractal 的城市设想了这样的一个规划方案,如下图所示:
当城区规模扩大之后,Fractal 的解决方案是把和原来城区结构一样的区域按照图中的方式建设在城市周围,提升城市的等级。
对于任意等级的城市,我们把正方形街区从左上角开始按照道路标号。
虽然这个方案很烂,Fractal 规划部门的人员还是想知道,如果城市发展到了等级 N,编号为 A 和 B 的两个街区的直线距离是多少。
街区的距离指的是街区的中心点之间的距离,每个街区都是边长为 10 米的正方形。
输入格式
第一行输入正整数 n,表示测试数据的数目。
以下 n 行,输入 n 组测试数据,每组一行。
每组数据包括三个整数 N,A,B,表示城市等级以及两个街区的编号,整数之间用空格隔开。
输出格式
一共输出 n 行数据,每行对应一组测试数据的输出结果,结果四舍五入到整数。
数据范围
1≤N≤31,
1≤A,B≤22N,
1≤n≤1000
输入样例:
3
1 1 2
2 16 1
3 4 33
输出样例:
10
30
50
思考
第n个城可以看作第n-1个城的四个办法的移动子城;
平面直角坐标系中,向量顺时针旋转公式:
左上,顺时针旋转90°的旋转后得到 ( − y , x ) ,在沿着 x 轴进行水平翻转得到 ( y , x ) 。
右上,平移
左下,逆时针旋转90°的旋转相当于进行了顺时针 270 ° 的翻转,得到 ( − y , − x ) ,接着进行平移得到 ( 2 ∗ l e n − 1 − y , l e n − 1 − x )
右下,平移;
第n个城有2^2(n-1)个房子;
第n个城中的第n-1的子城每次一部分的移动距离是 2^(n-1);
我的易错点:这里的矩阵和二维数组的模式是一样的不要搞混成学的平面直角坐标系
AC代码:
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;typedef long long ll;
typedef pair<ll,ll> PLL;PLL calc(ll n,ll m){if(n==0) return {0,0};ll len=1ll<<(n-1),cet=1ll<<(2*n-2);PLL c=calc(n-1,m%cet);ll x=c.first,y=c.second;ll A=m/cet;//cout<<A<<endl;if(A==0) return {y,x};if(A==1) return {x,y+len};if(A==2) return {x+len,y+len};return {2*len-y-1,len-x-1};
}int main(){int t;cin>>t;while(t--){ll n,h,o;cin>>n>>h>>o;PLL ac=calc(n,h-1);PLL bc=calc(n,o-1);double x=ac.first-bc.first,y=ac.second - bc.second;//cout<<x<<" "<<y<<endl;printf("%.0lf\n",sqrt(x*x+y*y)*10);};return 0;
}
Fractal Streets||分形之城相关推荐
- Fractal Streets(经典分形递归+坐标旋转)
原题链接:Fractal Streets 题面: 思路: 本题关键要解决:求编号为MMM的房屋在NNN级城市中的位置.把该问题记为 calc(N,M)calc(N, M)calc(N,M) ,本题就是 ...
- 分形之城:递归超典型例题,还没明白?手把手画给你看!
引用自Acwing,原题链接: 98. 分形之城 文章目录 题目 题解 代码 题目 城市的规划在城市建设中是个大问题. 不幸的是,很多城市在开始建设的时候并没有很好的规划,城市规模扩大之后规划不合理的 ...
- 98. 分形之城 (分形变换,矩阵旋转)
分形之城 题目 提交记录 讨论 题解 视频讲解 城市的规划在城市建设中是个大问题. 不幸的是,很多城市在开始建设的时候并没有很好的规划,城市规模扩大之后规划不合理的问题就开始显现. 而这座名为 Fra ...
- POJ 3889 Fractal Streets(逼近模拟)
$ POJ~3889~Fractal~Streets $(模拟) $ solution: $ 这是一道淳朴的模拟题,最近发现这种题目总是可以用逼近法,就再来练练手吧. 首先对于每个编号我们可以用逼近法 ...
- Mysql存储引擎之TokuDB以及它的数据结构Fractal tree(分形树)
在目前的Mysql数据库中,使用最广泛的是innodb存储引擎.innodb确实是个很不错的存储引擎,就连高性能Mysql里都说了,如果不是有什么很特别的要求,innodb就是最好的选择.当然,这偏文 ...
- 【POJ3889】Fractal Streets(分形图)
problem 给你一个原始的分形图 t组数据,对于每组数据,输入3个数n,h,o (n为在第n级,h,o为两个房子的编号) 求在第n级情况下,编号为h和o的两个点之间的距离*10为多少 其中,第n级 ...
- Fractal Streets (POJ3889)(分形图、递归)
题目传送门:http://poj.org/problem?id=3889 感谢大雪菜大神bilibili上的讲解和李煜东大神书本的引导. 题面大概意思是: 给你一个原始的分形图,t组数据,对于每组数据 ...
- OpenGL Julia Fractal(Julia分形)的实例
OpenGL Julia Fractal分形 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <cmath> #include < ...
- Fractal Streets
FractalStreetsFractal StreetsFractal Streets 题目链接:POJ 3889 题目大意 给你一个原始的分形图,ttt组数据,对于每组数据,输入333个数nnn, ...
最新文章
- asp.net 的性能计数器
- android studio配置系列 - 收藏集 - 掘金
- SMRT测序技术及其在微生物研究中的应用
- python什么时候进入中国-python什么时候发明的
- figure diagram illustrate exemplify profile
- matlab中sign函数用法
- jmeter更改java内存,jmeter内存溢出解决方法
- zabbix-server-mysql安装_zabbix server 安装部署
- 软考系统架构师笔记-综合知识重点(三)
- 解决IDEA每次打开新的maven项目都需要重新配置maven home的问题
- 如何在一个页面中动态放置多个Droppable来接受不同的Draggable?(accept参数的用法)...
- 2017 ACM-ICPC乌鲁木齐网络赛 G. Query on a string(KMP+树状数组)
- 第十五周项目3-在OJ上玩指针
- 论坛勋章动态特效制作流程
- 【12c】新特性:Oracle 12c Temporal Validity 时间有效性
- 等保-机房项目验收方法
- osi模型:七层模型介绍_什么是OSI(开放系统互连)模型?
- MemSQL:号称世界上最快的内存-关系型数据库 兼容MySQL但快30倍
- html表格按照编号排序,JS实现简单表格排序操作示例
- python的多线程使用setDaemon有什么意义?
热门文章
- 考华为云认证的必要条件、注意事项
- 计算机开机扫描磁盘,电脑开机扫描磁盘的方法
- mysql下出现Unknown column ‘id‘ in ‘on clause‘的解决方法
- Ubuntu20.0.4下使用VLC播放h.265(HEVC)视频缺少hevc解码器
- qgraphicsitem 复制副本,QGraphicsItem:调用paint函数时
- .py文件图标为白纸以及右键没有Edit with IDLE的解决办法
- 妇幼保健学习知识资料考试题及其规范标准答案
- NLP自然语言处理 集束搜索(beam search)和贪心搜索(greedy search)
- Unity获取物体自身坐标轴的方向以及沿着该方向运动的方法
- Java的Lambda表达式实例