• n阶分形图是由前面的(n-1)阶分形图所构成:
  • 左上角是沿Y轴右旋转90度再沿X轴选择180度;
  • 右上角不变;
  • 左下角是沿Y轴左旋转90度再沿X轴选择180度;
  • 右下角不变。

再找到对应的坐标变换:
左上角:(y,x)
右上角:(x,y+1<<(n-1))
左下角:(1<<n-y+1,1<<(n-1)-x+1)
右下角:(x+1<<(n-1),y+1<<(n-1))

import java.util.Scanner;public class MainG {static long x,y;public static void main(String[] args) {Scanner sc = new Scanner(System.in);int t = sc.nextInt();while(t-- > 0) {int n = sc.nextInt();long a = sc.nextLong();long b = sc.nextLong();G ares = dfs(n,a);G bres = dfs(n,b);System.out.println(res(ares,bres));}}public static long res(G a,G b) {return (long)(Math.sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y))*10+0.5);}public static G dfs(int n,long id) {if(n==1) {if(id==1) {x = 1;y = 1;}else if(id==2) {x = 1;y = 2;}else if(id==3) {x = 2;y = 2;}else {x = 2;y = 1;}return new G(x,y);}else {G t;long tem = (long)1<<(n-1);long tid = tem*tem;if(id<=tid) {          //左上角t = dfs(n-1,id);long temp = t.x;t.x = t.y;t.y = temp;return t;}else if(id<=2*tid) {    //右上角t = dfs(n-1,id-tid);t.y += tem;return t;}else if(id<=3*tid) {   //左下角t = dfs(n-1,id-2*tid);t.x += tem;t.y += tem;return t;}else {                  //右下角t = dfs(n-1,id-3*tid);long temp = t.x;long tx = (long)1<<n;t.x = tx-t.y+1;t.y = tem-temp+1;return t;}}}
}
class G{long x,y;public G(long x,long y) {this.x = x;this.y = y;}
}

Fractal Streets 递归+坐标转换相关推荐

  1. Fractal Streets(经典分形递归+坐标旋转)

    原题链接:Fractal Streets 题面: 思路: 本题关键要解决:求编号为MMM的房屋在NNN级城市中的位置.把该问题记为 calc(N,M)calc(N, M)calc(N,M) ,本题就是 ...

  2. POJ 3889 Fractal Streets(逼近模拟)

    $ POJ~3889~Fractal~Streets $(模拟) $ solution: $ 这是一道淳朴的模拟题,最近发现这种题目总是可以用逼近法,就再来练练手吧. 首先对于每个编号我们可以用逼近法 ...

  3. Fractal Streets (POJ3889)(分形图、递归)

    题目传送门:http://poj.org/problem?id=3889 感谢大雪菜大神bilibili上的讲解和李煜东大神书本的引导. 题面大概意思是: 给你一个原始的分形图,t组数据,对于每组数据 ...

  4. Fractal Streets

    FractalStreetsFractal StreetsFractal Streets 题目链接:POJ 3889 题目大意 给你一个原始的分形图,ttt组数据,对于每组数据,输入333个数nnn, ...

  5. 【POJ3889】Fractal Streets(分形图)

    problem 给你一个原始的分形图 t组数据,对于每组数据,输入3个数n,h,o (n为在第n级,h,o为两个房子的编号) 求在第n级情况下,编号为h和o的两个点之间的距离*10为多少 其中,第n级 ...

  6. Fractal Streets||分形之城

    这道题-蛮难的- 今天看到一句话,特别适合做这道题 文章目录 问题描述 思考 AC代码: 问题描述 城市的规划在城市建设中是个大问题. 不幸的是,很多城市在开始建设的时候并没有很好的规划,城市规模扩大 ...

  7. [poj3889]Fractal Streets

    转载请说明出处:http://blog.csdn.net/ben_xsy/article/details/79288058#%E4%BB%A3%E7%A0%81 目录 题目描述 解题思路 代码 题目描 ...

  8. POJ3889Fractal Streets 递归+ 坐标变换

    参考:https://vjudge.net/solution/10966515 他这个地方是 1 4 2 3的标号 在递归的过程中要知道如何处理"轴对称","点对称&qu ...

  9. #分治#poj 3889 Fractal Streets

    题目 问两个村庄之间的直线距离*10 分析 可以用分治的方法求出两个点的坐标,求出答案. 代码 #include <cstdio> #include <cmath> using ...

最新文章

  1. AI新基建如何构建?浪潮给出了一个答案
  2. 在 VS Code 里逛知乎、发文章?Zhihu on VSCode 来啦!重新定义内容创作!
  3. OpenStack/Gnocchi简介——时间序列数据聚合操作提前计算并存储起来,先算后取的理念...
  4. 5 控件固定大小_【聊技术】在Android中实现自适应文本大小显示
  5. 云炬WEB开发笔记 2-3git详细安装教程及下载太慢的解决办法
  6. jooq_jOOQ星期二:拉斐尔·温特豪德(Rafael Winterhalter)正在与字节好友合作字节码...
  7. 哲学家就餐(避免死锁)(多进程版)
  8. 链表的插入、删除、排序的程序
  9. iOS中的UIScrollView(滑动视图)
  10. python基础之函数介绍进阶操作、全局变量局部变量
  11. Java8 FlatMap的使用
  12. Linux笔记(df命令,du命令,磁盘分区)
  13. Easy RealMedia Producer使用向导
  14. js实现数组翻转(倒序输出)
  15. 3*4的方格,有多少个长方形?
  16. MySQL燕十八老师课程笔记:第十六课:MySQL各个函数
  17. 计算机发明者的电影,电脑发明的奠基人之一,你了解他的生平吗?这部电影带你走近天才...
  18. 滴答清单支持订阅哪些日历?
  19. 有机发光二极管显示技术
  20. Ubuntu 18.04安装远程桌面

热门文章

  1. 如何使用 LK 字幕脚本工具
  2. HSB概念和应用场景
  3. 解决 /usr/bin/ld:cannot find -lxxx 问题
  4. 股票交易一点感悟和程序化交易实战
  5. linux runtime pm机制的深入理解
  6. 文本分析--NLTK自然语言处理
  7. DirectX技术----D2D基础篇(一)
  8. Imx6ull 开发板通过Uboot使用网络启动系统
  9. Office2016 64位安装包+只安装3件套
  10. 英语背单词有用吗_从0学英语背单词有用吗,正确的方法是什么?