试题 历届真题 皮亚诺曲线距离【第十一届】【决赛】【C组】

提交此题   评测记录

资源限制

内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s


皮亚诺曲线距离

时间复杂度O(k)

思路:

对于k阶皮亚诺曲线点(0, 0)->(x, y)的距离表示为

pyn(k, x, y)

0 <= x, y <= 3^k-1

观察1阶皮亚诺曲线可得

pyn(1, x, y) = {     {0, 1, 2},

{5, 4, 3},

{6, 7, 8}};

0 <= x, y <= 2

而对于k>1阶的皮亚诺曲线, 可以把k阶皮亚诺曲线的每个格子扩展为1阶皮亚诺曲线, 即可得到k+1阶皮亚诺曲线

这里可以将所求pyn(k, x, y)距离分为两段

pyn(k, x, y) =

pyn(1, x/p, y/p)   (1阶皮亚诺曲线距离, p = 3^(k-1))

*

(3^p)^2   (将整个k阶皮亚诺曲线划分为1阶皮亚诺曲线, 1单元格内的总数(总距离))

+

pyn(k-1, x1, y1)   (x1, y1为k阶x, y映射到k-1阶坐标, 整个含义为最后一个不完整单元格在k-1阶起点到(x1, y1)的距离)

映射规则:

if(x/p == 1) y = p - 1 - y;         既划分后1阶皮亚诺曲线, x坐标为1的翻转y

if(y/p == 1) x = p - 1 - x;                                y坐标为1的翻转x

举例:

样例2

2

0 2

0 3

将2阶皮亚诺曲线S划分为9个1阶皮亚诺曲线si, i=[0, 8], 观察可得

s1内的与s0连接的起点(2, 3)->x2(0, 3)的距离相当于截取点(0, 3)在s1内的坐标(x %= p, y %= p), 并翻转x坐标x0 = 3-1-0, y0 = 0(既把点(2, 3)当做1阶皮亚诺曲线的原点)

即可得到点x2(0, 3)的距离为

pyn(2, 0, 3) =

pyn(1, 0, 1)           = 1

*

(3 ^ 1) ^ 2             = 9

+

pyn(1, 2, 0)           = 6

= 1 * 9 + 6

= 15

同理可得

pyn(2, 0, 2) = 2

样例2结果为15 - 2 = 13

#include <iostream>using namespace std;typedef long long LL;//预存1阶皮亚诺曲线的距离矩阵
LL lengths[3][3] = {{0, 1, 2}, {5, 4, 3}, {6, 7, 8}};LL pw[200];//3的i次幂//初始化3的i次幂
void init()
{pw[0] = 1;for (int i = 1; i <= 39; i++) pw[i] = pw[i - 1] * 3;
}//计算距离并变换x, y
LL get_length(LL p, LL &x, LL &y)
{LL ix = x/p, iy = y/p;x %= p, y %= p;if(ix == 1) y = p - 1 - y;if(iy == 1) x = p - 1 - x;return lengths[ix][iy];
}//k阶皮亚诺曲线点(0, 0)到点(x, y)的距离
LL pyn(LL k, LL x, LL y)
{if(k == 1) return lengths[x][y];else return pw[k-1] * pw[k-1] * get_length(pw[k-1], x, y) + pyn(k-1, x, y);
}int main()
{LL k, sx, sy, ex, ey;cin >> k >> sx >> sy >> ex >> ey;if(k>=40)k=39;//k>40无效且爆long longinit();LL ans = pyn(k, sx, sy) - pyn(k, ex, ey);//可以使用llabs, 切忌使用abscout << (ans>0 ? ans : -ans) << endl;return 0;}

试题 历届真题 皮亚诺曲线距离【第十一届】【决赛】【C组】相关推荐

  1. 蓝桥杯2020年第十一届国赛真题-皮亚诺曲线距离

    我找不到满分题解,结果我肝一个下午肝出来了,有一说一,在考场碰到这题估计要没,今年国赛加油把,方法过于暴力,仅供参考 #include<iostream> #include<algo ...

  2. 2020年第十一届蓝桥杯决赛JAVA B G题“皮亚诺曲线距离“

    2020年第十一届蓝桥杯决赛JAVA B G题"皮亚诺曲线距离" 2020国赛 JAVA B组 个人题解目录 [问题描述] 皮亚诺曲线是一条平面内的曲线. 下图给出了皮亚诺曲线的 ...

  3. 2020第十一届蓝桥杯国赛(决赛)C/C++ B组F题皮亚诺曲线距离题解

    F: 皮亚诺曲线距离 [问题描述] 皮亚诺曲线是一条平面内的曲线. 下图给出了皮亚诺曲线的 1 阶情形,它是从左下角出发,经过一个 3 × 3 的方格中的每一个格子,最终到达右上角的一条曲线. 下图给 ...

  4. 蓝桥杯--历届真题 回文日期【第十一届】【省赛】【B组】

    试题 历届真题 回文日期[第十一届][省赛][B组] 提交此题   评测记录 资源限制 时间限制:1.0s   内存限制:256.0MB  哎话说好久没写过日期题了,回忆起刚学的时候被日期统治的恐惧了

  5. 蓝桥杯第十一届决赛真题之皮亚诺曲线距离

    蓝桥杯第十一届决赛真题之皮亚诺曲线距离python 借鉴了https://www.cnblogs.com/EchoZQN/p/14829144.html的做法 然而同样的想法,python代码提交之后 ...

  6. 试题 历届真题 魔方旋转问题【历届真题】【决赛】【高职组】

    这道题评测有点问题(评测点的输出全正确,结果正确率0%) 试题 历届真题 魔方旋转问题[历届真题][决赛][高职组] 资源限制 内存限制:256.0MB C/C++时间限制:1.0s Java时间限制 ...

  7. 【题解】【蓝桥杯】试题 历届真题 砝码称重【第十二届】【省赛】【B组】

    题目链接 试题 历届真题 砝码称重[第十二届][省赛][B组] 题目描述 解题思路 暴力,两个map,分别存储当前能称出的重量和遍历时用于计算的重量 需要注意的三点是 abs函数是在math.h里面的 ...

  8. 蓝桥-皮亚诺曲线距离

    求解皮亚诺曲线距离 [问题描述]  皮亚诺曲线是一条平面内的曲线.  下图给出了皮亚诺曲线的 1 阶情形,它是从左下角出发,经过一个 3 × 3 的方格中的每一个格子,最终到达右上角的一条曲线.  下 ...

  9. 蓝桥杯【第十一届】【决赛】F皮亚诺曲线距离 + G出租车

    题目地址 官网地址 F皮亚诺曲线距离 找规律的题目,应该有各种各样的方法来做 (代码写完才发现我的x,y和题目是反过来的qwq, 不过都一样) (顺带吐槽一下,为啥不用写高精度就能过,题目里只是要求答 ...

最新文章

  1. Chrome之排序问题
  2. 【leetcode❤python】 9. Palindrome Number
  3. 如何参悟Java的三大框架
  4. Storm精华问答 | 遇到这些错误日志该如何解决?
  5. XUtils BitmapUtils 改造以加入drawable支持
  6. 古老的txt下传和txt上载
  7. Android 应用程序之间数据共享—ContentProvider
  8. 酒店订房管理系统php,酒店预定管理系统(源码+数据库+文档)
  9. Java job interview:项目架构研发京东大数据价值最大化的应用实践
  10. Python学习-通过斗鱼api获取弹幕
  11. 未来计算机畅想英语作文,畅想未来的生活英语作文
  12. html excel 在线查看,web在线查看服务器的Excel文件
  13. 使用Cobbler批量部署Linux和Windows
  14. 专访SegmentFault开发团队:垂直问答社区的架构升级
  15. 利用matlab快速实现连续系统转变为离散系统(z变换)
  16. Android开发快速入门及导出apk
  17. fat文件系统基础知识
  18. Day1.数据可视化-Python语法
  19. RuntimeError: Found dtype Long but expected Float
  20. 我的世界1.13 mod制作——制作一个Item(二)

热门文章

  1. 小何讲进程:Linux中的exec函数族讲解
  2. python系列:socket库详解
  3. 干货|手把手教你做app自动化测试
  4. 哈格管理信息系统【内容整理】
  5. Springboot根据实体类生成数据库表
  6. 【翻译】关于代码指针完整性(CPI)的有效性——On the Effectiveness of Code Pointer Integrity
  7. Gson直接将json转list示例 (TypeToken)以及通过内联函数结合reified简化代码
  8. LG P3990 【SHOI2013】 超级跳马 解题报告
  9. YOLO应用化之添加中文支持
  10. Affix 固钉的使用