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

news/2024/10/19 0:20:37/

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

2020国赛 JAVA B组 个人题解目录
【问题描述】
皮亚诺曲线是一条平面内的曲线。
下图给出了皮亚诺曲线的 1 阶情形,它是从左下角出发,经过一个 3×3 的
方格中的每一个格子,最终到达右上角的一条曲线。
在这里插入图片描述

下图给出了皮亚诺曲线的 2 阶情形,它是经过一个 3^2 × 3^2 的方格中的每一
个格子的一条曲线。它是将 1 阶曲线的每个方格由 1 阶曲线替换而成。
在这里插入图片描述

下图给出了皮亚诺曲线的 3 阶情形,它是经过一个 3^3 × 3^3 的方格中的每一
个格子的一条曲线。它是将 2 阶曲线的每个方格由 1 阶曲线替换而成。

在这里插入图片描述

皮亚诺曲线总是从左下角开始出发,最终到达右上角。
我们将这些格子放到坐标系中,对于 k 阶皮亚诺曲线,左下角的坐标是
(0 , 0),右上角坐标是 (3^k−1 , 3^k−1),右下角坐标是 (3^k−1 , 0),左上角坐标是
(0 , 3^k−1)。
给定 k 阶皮亚诺曲线上的两个点的坐标,请问这两个点之间,如果沿着皮
亚诺曲线走,距离是到少?
【输入格式】
输入的第一行包含一个正整数 k,皮亚诺曲线的阶数。
第二行包含两个整数 x1 , y1 ,表示第一个点的坐标。

第三行包含两个整数 x2 , y2 ,表示第二个点的坐标。
【输出格式】
输出一个整数,表示给定的两个点之间的距离。
【样例输入】
1
0 0
2 2
【样例输出】
8
【样例输入】
2
0 2
0 3
【样例输出】
13
【评测用例规模与约定】
对于 30% 的评测用例,0 ≤ k ≤ 10。
对于 50% 的评测用例,0 ≤ k ≤ 20。
对于所有评测用例,0 ≤ k ≤ 100, 0 ≤ x1 ,y1 , x2 ,y2 < 3^k , x1 ,y1 , x2 ,y2 ≤ 10^18 。
数据保证答案不超过 10^18 。

解析:对问题进行降阶,最终转化成一阶的问题。以下分析均已3阶和2阶进行举例递推:
由观察发现以下特性:
(1)所有大于一阶的曲线都具有相同的运动顺序:
在这里插入图片描述
在这里插入图片描述
(2)对于n阶,9个n-1阶的入口方向和出口位置是固定的,1到9的入口分别是左下,右下,左下,左上,右上,左上,左下,右下,左下,共四种情况。

降阶思路:
以sum记录总步数
(1)算出在n-1阶中,起点在第a块,终点在第b块。则sum+=(b-a)* (3n-1)2
(2)将终点在第b块的位置转换成第a块等价的位置,并平移至a块
(3)将两点都平移到第一块等效位置
重复(1),(2),(3)递归至一阶。
sum+=计算一阶中两点相对位置的步数。
注:
1.可能有的同学会问如果在(2)中平移后终点到了起点前面怎么办?这个没关系,因为此时下一步sum+=(b-a)* (3n-1)2中(b-a)是负的,相当于往回走。
2.如何计算在第几块?通过计算起横纵坐标分别位于x3n-1和(x-1)3n-1之间判断,如对于三阶,(20,5)横坐标位于2*(32)与3*(32)之间,那么它的块数是3,4,9中的一个,纵坐标再通过同样的算法可以确定唯一的一块。
3.如何平移?由于总共只有四种情况,此时又知道点在第几块,只需要对相应的块的坐标进行旋转或对称即可转换成对于块的等效位置,显然,转换平移后和转换前两点的相对位置不变。

(代码后续补上)


http://www.ppmy.cn/news/248241.html

相关文章

java实现加减乘除运算符随机生成十道题并判断对错_java——随机口算题(加减乘除随机)...

java——随机口算题(加减乘除随机) import java.util.Scanner; public class jisuan {static int wrongnumber=0; public static void main(String[] args) {for(int i=0;i<5;i++) {System.out.print((i+1)+"."+ ""); int a=(int)(System.currentTimeMi…

深入理解计算机编码与字符集的区别

1、编码表与字符集的区别 比如&#xff0c;unicode是字符集&#xff08;万国码&#xff09;&#xff0c;但计算机如何存储编码&#xff08;几个字节存储&#xff09;&#xff0c;这时候要用到编码规则&#xff08;UTF-8&#xff09; 举例&#xff1a; 用记事本编辑的时候&am…

The Graph 2 构建一个基本的subgraph

这一节我们按照官方示例构建一个简单的subGraph 智能合约 // SPDX-License-Identifier: MIT pragma solidity >0.4.0;contract GravatarRegistry {event NewGravatar(uint id, address owner, string displayName, string imageUrl);event UpdatedGravatar(uint id, address…

The Graph 3 subGraph的callHandler,blockhandler,实体关系和全文索引

上一节我们基于官方示例构建了一个具有基本功能的subgraph&#xff0c;这一节我们介绍其他的一些特性。 callHandler 虽然eventHandler提供了一种有效的方法来收集合约状态的相关更改&#xff0c;但许多合约避免生成event以优化gas成本。在这些情况下&#xff0c;subgraph可以订…

2022年4月3日-4月15日(方案A,ogremain源码抄写+ue4视频学习,共22小时,合计1270小时,剩8730小时)

截至2022年4月1日&#xff0c;ogreMain剩下4533行&#xff08;含注释&#xff09;&#xff0c;纯代码2646行 周二时学完了ue第五套视频教程编辑器1&#xff0c;good 接下来 UE4视频教程进行到了mysql(1.1)&#xff0c;tf1(2.1),oss(4.2),simpleThread(1.2),editor2(未开始) 清…

企业综合安防管理平台

企业综合安防管理平台 平台概述 长期以来各厂家以市场为导向&#xff0c;专注于具备自身特长的单一系统产品&#xff0c;造成目前在技防领域出现的众多分项系统各自为政的局面&#xff0c;如单一的视频监控系统、门禁系统、访客系统、停车管理系统、报警系统等。各厂家单一业务…

nginx+tomcat 负载均衡、动静分离集群

文章目录 一、NginxTomcat负载均衡的组合原因1.1 Nginx实现负载均衡的原理1.2 Nginx实现负载均衡的主要配置项1.3 NginxTomcat负载均衡的组合的优点1.4 NginxTomcat负载均衡的实验设计 二、动静分离部署2.1 部署TOMCAT后端服务器2.2部署nginx服务器2.3安装nginx动态服务器 一、…