正题

题目链接:http://poj.org/problem?id=3889


大意


第一级城市为图一,然后每次扩展一级就将原本的城市复制3份,一份放上面,一份正旋90’放左上,一份逆序90’放左边,最后将4份的头和尾连起来,规定左上角为编号1,之后根据道路编号。
求在一个n级城市中s号和d号的直线距离。


解题思路

我们可以从n级逐一降级下去,然后每次旋转的话我们可以旋转得出的坐标。


code

#include<cstdio>
#include<algorithm>
#include<cmath>
#define ps(x) x*x
using namespace std;
int pows[31],n,s,d,t,x,y,x1,yy1,x2,y2;
void getid(int n,int num)//求坐标
{if(n==1){switch(num){case 2:{y+=1;break;}case 3:{x+=1;y+=1;break;}case 4:{x+=1;break;}}return;}//最后一级特殊判断int w=(num-1)/pows[n-1]/pows[n-1];//判断是在哪个区块switch(w){case 0:{getid(n-1,num-(pows[n-1]*pows[n-1])*w);swap(x,y);//旋转坐标break;}case 1:{getid(n-1,num-(pows[n-1]*pows[n-1])*w);y+=pows[n-1];//旋转坐标break;}case 2:{getid(n-1,num-(pows[n-1]*pows[n-1])*w);x+=pows[n-1];y+=pows[n-1];//旋转坐标break;}case 3:{getid(n-1,num-(pows[n-1]*pows[n-1])*w);int dx=x,dy=y;x=pows[n]+1-dy;y=pows[n-1]+1-dx;//旋转坐标break;}}
}
double dis(double x1,double yy1,double x2,double y2)
{return sqrt(ps(fabs(x1-x2))+ps(fabs(yy1-y2)));
}
int main()
{scanf("%d",&t);pows[0]=1;for(int i=1;i<=30;i++)pows[i]=pows[i-1]*2;x=1;y=1;for(int ti=1;ti<=t;ti++){scanf("%d%d%d",&n,&s,&d);getid(n,s);x1=x*10;yy1=y*10;x=1;y=1;getid(n,d);x2=x*10;y2=y*10;x=1;y=1;printf("%0.lf\n",dis(x1,yy1,x2,y2));//求直线距离}
}

POJ3889-Fractal Streets【分形,递归,分治】相关推荐

  1. [poj3889]Fractal Streets

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

  2. Fractal Streets||分形之城

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

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

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

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

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

  5. [剑指offer][JAVA]面试题第[33]题[二叉搜索树的后序遍历][单调栈][递归分治]

    [问题描述][中等] 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同.参考以下这颗二叉搜索树:5/ ...

  6. Mysql存储引擎之TokuDB以及它的数据结构Fractal tree(分形树)

    在目前的Mysql数据库中,使用最广泛的是innodb存储引擎.innodb确实是个很不错的存储引擎,就连高性能Mysql里都说了,如果不是有什么很特别的要求,innodb就是最好的选择.当然,这偏文 ...

  7. 递归分治问题之找出两个有序序列的中间值

    问题描述: You are interested in analyzing some hard-to-obtain data from two separate databases. Each dat ...

  8. URAL 1181 Cutting a Painted Polygon【递归+分治】

    题目: http://acm.timus.ru/problem.aspx?space=1&num=1181 http://acm.hust.edu.cn/vjudge/contest/view ...

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

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

最新文章

  1. css中position的几个值
  2. Spring-Data-MongoDB的Index注解的expireAfterSeconds参数不起作用?解决方案居然是这样的!...
  3. 电商双11已臻巅峰,众筹的双11才刚刚开始
  4. 后端数据操作超时_数据分析在知乎商业质量保障中的初步实践
  5. 华为HCIE实验考试真题,杭州考场上午TS下午LAB
  6. 推荐一个yaml文件转json文件的在线工具
  7. oracle 总账 gl,oracle EBS R12 总帐设置手册 BR100GL.pdf
  8. 一眼中毒!雷军晒小米9官方高清真机图:全息幻彩惊艳无比
  9. 20210725:FLAC刻录音乐CD教程01-下载安装Nero打补丁
  10. win10家庭中文版计算机,Win10家庭版和专业版有哪些区别?教你区分Win10家庭版和专业版...
  11. 3.24 爬虫小周记
  12. MonthCalendar显示该年的12个月份
  13. ResourceExhaustedError
  14. 阿里云云安全理工程师认证 部分题目 ACA
  15. 游戏服务器被攻击了怎么办?
  16. Android音量控制调节
  17. 昆山杜克大学计算机专业,昆山杜克大学有哪些专业 附特色重点专业名单
  18. 如何使用万能地图下载器下载矢量建筑边界
  19. linux 伪静态 cms,YzmCMS伪静态配置
  20. Opencv Mat矩阵操作

热门文章

  1. python导入文件列行_python读写csv文件并增加行列的实例代码
  2. jax rs mysql_Jersey / JAX-RS ExceptionMapper MySQL
  3. 数据结构——二叉树的双序遍历
  4. dotcpp1115 DNA-打印图案
  5. [USACO1.5]八皇后 Checker Challenge
  6. [蓝桥杯2016初赛]方格填数-next_permutation
  7. P4146 序列终结者 平衡树 + lazy维护
  8. 【UOJ549】序列妙妙值【异或】【根号分治】
  9. 【NOI2015】品酒大会【后缀数组】【并查集】
  10. 牛客挑战赛30 C 小G砍树 换根dp+组合