【题目描述】

    

【题目链接】

    http://noi.openjudge.cn/ch0204/8463/

【算法】

    为求等级N下的点的坐标可由几何关系找到其与等级N-1下对应点的关系,然后递归直至所有点的祖先(等级0)即可计算出坐标。

【代码】

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 int t;
 5 ll n,s,d;
 6 pair<ll,ll> calc(int state,ll num)
 7 {
 8     if(!state) return make_pair(1,1);
 9     ll side=1<<(state-1),sum=side*side;
10     ll  rec=num/sum,pre_num=num%sum;
11     pair<ll,ll> pr=calc(state-1,pre_num);
12     switch(rec) {
13     case 0: swap(pr.first,pr.second); break;
14     case 1: pr.first+=side; break;
15     case 2: pr.first+=side,pr.second+=side; break;
16     case 3: swap(pr.first,pr.second),pr.first=side-pr.first+1,pr.second=side*2-pr.second+1;
17     }
18     return pr;
19 }
20 int main()
21 {
22     scanf("%d",&t);
23     while(t--) {
24         scanf("%d%lld%lld",&n,&s,&d);
25         pair<ll,ll> p1=calc(n,s-1);
26         pair<ll,ll> p2=calc(n,d-1);
27         ll dx=p1.first-p2.first,dy=p1.second-p2.second;
28         printf("%.0f\n",sqrt(dx*dx*1.0+dy*dy*1.0)*10);
29     }
30     return 0;
31 }

【《算法竞赛进阶指南》大佬代码,侵删】

 1 /*
 2   Author: Yufei Du
 3   本程序仅供参考
 4 */
 5 #include <cmath>
 6 #include <cstdio>
 7 #include <cstring>
 8 #include <cstdlib>
 9 #include <algorithm>
10 using namespace std;
11
12 pair<__int64, __int64> recur (int stage, __int64 id)
13 {
14     if (stage == 0) return make_pair(0, 0);
15     __int64 max = 1 << (stage - 1), s = max * max;
16     __int64 z = id / s, idsp = id % s;
17     pair<__int64, __int64> psp = recur(stage - 1, idsp);
18     if (z == 0 || z == 3) swap(psp.first, psp.second);
19     if (z == 3)
20     {
21         psp.first = max - psp.first - 1;
22         psp.second = max - psp.second - 1;
23     }
24     if (z == 1 || z == 2) psp.first += max;
25     if (z == 3 || z == 2) psp.second += max;
26     return psp;
27 }
28 int main ()
29 {
30
31     int kase; for (scanf("%d", &kase); kase; --kase)
32     {
33         int n; __int64 h, o;
34         scanf("%d %I64d %I64d", &n, &h, &o);
35         pair<__int64, __int64> hp = recur(n, h - 1);
36         pair<__int64, __int64> op = recur(n, o - 1);
37         __int64 dx = abs(hp.first - op.first), dy = abs(hp.second - op.second);
38         printf("%.0f\n", (double)sqrt(dx * dx + dy * dy) * 10);
39     }
40     return 0;
41 }

转载于:https://www.cnblogs.com/Willendless/p/9361879.html

Stupid cat Doge (分形图)相关推荐

  1. POJ(8463)-----Stupid cat Doge(openjudge)

    Stupid cat & Doge 描述 动物园的规划和城市规划一样是个令人头疼的大问题.不幸的是,动物园规划师R.V.L.先生高估了小动物们的智商,他设计了一个极其复杂的动物园道路规划方案, ...

  2. 利用python画分形图_使用 Python 绘制 Mandelbrot 分形图

    以前收集的关于Mandelbrot分形图的Python脚本,Mandelbrot集合的图像因它洛可可式繁复卷曲华丽的风格而受到大众的欣赏和赞叹,与其他分形图案一起,是许多艺术家和设计师的灵感来源. 是 ...

  3. javascript canvas生成分形图练习

    简单的分形图,类似于二叉树 一颗数有两个对称分支,然后每个分支又可以继续生长.用一个数组记录每一层的信息,然后一层一层迭代,每迭代一次树枝就增加一层. 可以控制迭代次数,初始树枝长度 ,长度比例等. ...

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

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

  5. 如何用 canvas 画出分形图

    前言 分形是一门以非规则几何形态为研究对象的几何学,由曼德勃 罗(B.B.Mandelbrot)等人创立并命名. 分形图从整体上看,是处处不规律的.但从局部观察,图形的规则性又是相同的,即具有自相似的 ...

  6. 轻松一下:python(turtle模块)绘制分形图

    分形 分形,具有以非整数维形式充填空间的形态特征.通常被定义为"一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状",即具有自相似的性质.分形 ...

  7. python绘制分形图基础_python绘制分形图

    用Delphi 实现分形图形的绘制 [日期:2006-05-27] 来源: 作者... 基于 VB 的分形图形绘制 尹舸;胡小芳;许华忠 [期刊名称]<网络新媒体技术> [年(卷),期]2 ...

  8. python绘制分形图形_Python绘制L-System的分形图

    Python绘制L-System的分形图代码及解析. 完整代码如下 # -*- coding: utf-8 -*- #L-System(Lindenmayer system)是一种用字符串替代产生分形 ...

  9. matlab julia分形图,Mandelbrot集和Julia集的分形图之matlab实现

    Mandelbrot集和Julia集的分形图之matlab实现 基于逃逸时间算法 1. Mandelbrot集 function Mandelbrot(res,iter,xc,yc,xoom) %Ma ...

  10. python绘制分形图基础_Python 绘制分形图(曼德勃罗集、分形树叶、科赫曲线、分形龙、谢尔宾斯基三角等)附代码...

    1. 曼德勃罗集 import numpy as np import pylab as pl import time from matplotlib import cm def iter_point( ...

最新文章

  1. 取出json中的数据php,怎么从Json中取出数据放到一个新组中
  2. linux 档案类型s,Linux学习(四)档案与目录管理
  3. php 判断类型array,判断一个变量是数组Array类型的方法_javascript技巧
  4. Opengl-深度测试模板测试
  5. 五、【SAP-PM模块】服务采购业务流程
  6. ALV 后台输出时,增加spool假脱机的宽度
  7. 搜索推荐系统实战:起始篇
  8. 2015华为校招机试题
  9. Redis运维和开发学习笔记(4) Redis参数意义
  10. 动态生成表格、隐藏表格、选中删除任意行、jquery、输入验证
  11. window下配置SSH连接GitHub、GitHub配置ssh key
  12. 1、kali的安装与环境配置
  13. 9种高性能可用高并发的技术架构
  14. java外部工具配置_eclipse配置外部工具利用javah编译生成头文件
  15. HDU 5933 2016CCPC杭州 A: ArcSoft's Office Rearrangement
  16. 华为畅享8plus停产了吗_华为99元起换电池新增27款机型!同时新增一项实用功能...
  17. Oracle 根据业务创建新的用户
  18. 常用UCI数据集(已处理)
  19. ipone5 无法安装ipa软件
  20. 网络聊天室项目说明书

热门文章

  1. R语言时间序列数据应用xts
  2. 项目回顾-PopupWindow
  3. java中XPATH操作xml,非常便捷
  4. (转)C# 把我所积累的类库全部分享给博友(附件已经上传)
  5. 《孙子兵法》【作战第二】
  6. C#学习日志三(流程控制语句)
  7. 用反卷积(Deconvnet)可视化理解卷积神经网络还有使用tensorboard
  8. 数据库备份DBS商业化发布
  9. 使用postman测试接口
  10. spring MVC中页面添加锚点