POJ3889-Fractal Streets【分形,递归,分治】

正题

题目链接: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));//求直线距离}
}

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

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

相关文章

.NET Core 2将Visual Basic带到了Linux和macOS平台

Microsoft已经愈加接近将Visual Basic划为.NET Core平台上的一等公民。作为.NET Core 2发行版的一部分&#xff0c;VB开发者现在可以编写针对.NET Standard 2.0的控制台应用程序和类库&#xff0c;并且可以兼容多个平台。这就意味着运行在Windows上的可执行文件或者类库也能够运…

汇编语言(二十五)之成绩分段统计

已知一个班的成绩&#xff0c;进行60,70,80,90,100分段统计 程序运行&#xff1a; 代码&#xff1a; datas segmentstudents_number dw 10students dw 76,69,84,90,73,88,99,63,100,80s6 dw 0hs7 dw 0hs8 dw 0hs9 dw 0hs10 dw 0houtput…

感动哭了……

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”一大早就好多人送祝福&#xff0c;感动不已~下课看手机之后&#xff0c;看到手机上有条消息&#xff0c;是认识好多年好多年的大姐发的&#xff1a;“小穆&#xff0c;今天你生日&…

汇编语言(二十六)之自然数求和

输入一个数N&#xff0c;对1到N的所有自然数求和 程序运行&#xff1a; 代码&#xff1a; datas segmentN_string_max_length db 0ffhN_string db 0, 100h dup(?)N dw 0 sum dd 0 input db …

同学们,看看这里吧!!!

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。恶”早上一进班&#xff0c;发现班内少了好几个学生&#xff0c;一想肯定是这几个熊孩子又违纪被王老师喊去了…自从这些孩子入学以来&#xff0c;大事小事不断的去犯&#xff0c;尤其是…

Oleans集群之Consul再解释

由于上周发文章的时候,我正要打算出门,所以就把写好的全部发出去了,有点仓促,虽然写了主线,但是这里还是需要再次解释一下. 我看到Orleans已经升级到了1.5.1了,(nuget上的官方发布),于是我就把Orleans升级到了1.5.1,顺便把net更改到了4.7版本. 再升级的时候,注意有几个依赖库…

别在被骗了!!!!!!

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”今天&#xff0c;在身边又发生了一起诈骗案&#xff0c;被骗金额达5000余元在&#xff0c;就像佟老师说的一样&#xff0c;骗子可是一点人性都没有……大致的看了看具体细节&#xff0…

汇编语言(二十七)之身份证最后一位求和校验

输入身份证前十七位数字&#xff0c;输入18位身份证 程序运行&#xff1a; 代码&#xff1a; datas segmentw db 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2y db 1,0,X,9,8,7,6,5,4,3,2ID_max_length db 18ID db 0, 19 dup(?)input …

C#使用Xamarin开发可移植移动应用进阶篇(8.打包生成安卓APK并精简大小),附源码

我记得,之前在写安卓方面的文章的时候,有人就问过我.Xamarin.Android为什么打包出来这么大?随便一个HelloWord就20-30MB? 嗯..今天我们就来解决这个问题.. 我们先从指定一个应用程序图标开始.. 1.指定应用程序图标 我们直接右键Android项目,属性.选择安卓清单.如下: 在Ap…

vue中设置子组件的点击事件不影响父组件的点击事件

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”今天分享个技术块儿。在做项目的过程中&#xff0c;遇到了个问题&#xff0c;简单的描述一下&#xff1a;有一个card卡片&#xff0c;上面绑定了个点击事件&#xff0c;点击card卡片&a…

一个还算简单的微信消息SDK(基于.Net Standard 2.0)

虽然微信公众号出现了好久&#xff0c;不过在SDK这件事情上感觉并没有多少人把它当成一个有技术含量的事情来做&#xff0c;很多SDK做的事情就是一个代码的堆叠&#xff0c;当然也可能写的好的并没有开源出来。所以在某个翻遍github而无所获的下午我写了一个基础的基于事件的微…

汇编语言(二十八)之统计单词

输入一行字符串&#xff0c;统计单词SUN出现的个数 程序运行&#xff1a; 代码&#xff1a; datas segmentENG_max_length db 0ffhENG_length db 0ENG db 100h dup(?)eng_len dw 0SUN db SUNsun_len dw $-SUNcount dw 0…

这可能就是写代码的乐趣吧,你,也一定会爱上写代码的!

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”现在是&#xff1a;2021年10月23日22:02:41。于我来说&#xff0c;最感兴趣的莫过于上课和写代码了。最近一下在做一个项目&#xff0c;可能是前期数据库设计的不是很好&#xff0c;导…

汇编语言(二十九)之数值的二进制和十进制

给定一个数&#xff0c;输出该数的二进制和十进制数 程序运行&#xff1a; 代码&#xff1a; datas segmentVAL1 dw 156datas endsstacks segment stackdb 100h dup(?)stacks endscodes segmentassume cs:codes,ds:datas,ss:stacks BANDO proc far start:push dsmov ax,0…

ASP.NET Core MVC – Tag Helper 组件

ASP.NET Core Tag Helpers系列目录&#xff0c;这是第五篇&#xff0c;共五篇&#xff1a; ASP.NET Core MVC – Tag Helpers 介绍ASP.NET Core MVC – Caching Tag HelpersASP.NET Core MVC – Form Tag HelpersASP.NET Core MVC – 自定义 Tag HelpersASP.NET Core MVC – T…

vue+elementui中,el-select多选下拉列表中,如何同时获取:value和:label的值?

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。 项目场景&#xff1a; 正如题目所说&#xff0c;今天在项目过程中遇到了个需求&#xff0c;因为需要在前台展示运动员的名称&#xff0c;但是运动员的编号在别的地方还需要使用&#xff…

C#使用Xamarin开发可移植移动应用进阶篇(9.混淆代码,防止反编译)

嗯,既然是客户端应用,自然而然就需要一些防止源码泄漏的手段.通过C#编写的APP,完全是可以直接解压APK,然后得到里面的DLL然后进行反编译的.. 如下图: 嗯..这样就会造成代码泄漏.. 下面就介绍一下,如何使用VS自带的Dotfuscator来进行混淆代码. 1.安装Dotfuscator 打开VS2017…

想绝交,就借钱!

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”今天谈论的话题只有两个字&#xff0c;就是“钱”之前在原来单位工作的时候&#xff0c;老板就给我说&#xff0c;我弟弟的工资让我帮忙管着&#xff0c;不然到用的时候拿不出来&#…

luoguSP1805,POJ2559-Largest Rectangle in a Histogram【单调栈】

正题 POJ题目链接:http://poj.org/problem?id2559 luogu评测记录:https://www.luogu.org/recordnew/lists?uid52918&pidSP1805 大意 有n个高度不同&#xff0c;宽度为1的长方形排列在一起。找到一个长方形使其面积最大 解题思路 我们先考虑单调递增的情况 …

Orleans解决并发之痛(一):单线程

程序在运行过程中有时会莫名其妙出现代码的某些约束或者执行结果和理想状况不一样&#xff0c;正常逻辑怎么会出现这样的情况&#xff1f;到底发生了什么&#xff1f;好像见了鬼&#xff01;瞬间好无助。 谁来救救我 大多数出现正常逻辑很难解释的时候&#xff0c;我们可能会想…