当前位置: 首页 > news >正文

[题解]2024CCPC郑州站——Z-order Curve

题目简介

  • 题源:L. Z-order Curve | GYM
  • 题意:对于如下Z曲线,给定曲线端点 \([L,R]\),找出最小的 \(L^{'}\),使得 \([L^{'},R^{'}-L+1]\)\([L,R]\) 曲线形状相同。注意\([L,R]\)为有向线段。
  • 数据范围:\(0\le L,R\le 10^{18}\)
    在这里插入图片描述
  • 关键词:递归,二进制(签到)

题解1:递归

观察可知Z曲线具有自相似性。每一个大小为\(2^k\)的大Z曲线,均由4个大小为\(2^{k-1}\)的小Z曲线拼接而成,我们称其分别为左上、右上、左下、右下。这天然启发我们使用递归求解。具体而言:

  • \([L,R]\) 位于同一层,则可通过取模,将其平移到位于左上角的小Z曲线中,同时向下一层递归;
  • 否则,代表已找到能表示出该曲线形状的最小Z曲线,无法再继续分解。此时左端点即为答案。

观察到 \(R\le 10^{18}\),使用换底公式求得其 \(<2^{60}\),故直接从第60层向下递归。复杂度\(O(\log R)\)

#include<bits/stdc++.h>
using namespace std;
using i64=long long;
#define int i64
#define endl '\n'
int solve(int L,int R,int k) {int size=1LL<<k;if (L/size!=R/size) return L;return solve(L%size,R%size,k-1);
}
signed main() {ios::sync_with_stdio(0),cin.tie(0);int t;cin>>t;while (t--) {int l,r;cin>>l>>r;cout<<solve(l,r,60)<<endl;}return 0;
}

题解2:二进制

前置知识:莫顿码的构成,四叉树。此思想理解非常困难,博主太菜了,暂时搁置。

http://www.gsyq.cn/news/63310.html

相关文章:

  • 关于字符串的小记
  • 机器人设备端AI技术实现突破
  • 251127今天是学习的一天
  • 金融科技中网络安全的关键作用
  • 否定之否定的辩证法,谁会不承认?但又有多少人说的透?
  • Windows Update - Part 5: Timeline [discarded draft]
  • 工业4.0新范式:MCP服务器如何重构智能制造数据流 - 详解
  • MySQL性能分析(六)之PS监控SQL性能
  • Go语言设计模式:适配器模式详解 - 实践
  • 【第一周:Python 测试开发核心错题集 避坑指南】
  • 20251127周四日记
  • 题解:P13266 [GCJ 2014 Finals] Symmetric Trees
  • python---深拷贝浅拷贝
  • Codeforces Round 1066 (Div. 1 + Div. 2) 比赛总结
  • 解决VirtualBox - Error In supR3HardenedWinReSpawn报错
  • 1127随笔
  • gradle的各个环境依赖jar包的同一个版本导致的严重后果
  • 20251127
  • Day26字体图标--上传矢量图
  • 【机器学习】突破分类瓶颈:用逻辑回归与Softmax回归解锁多分类世界 - 指南
  • 双特异性抗体:抗癌 “双面手”,两种模式精准杀伤癌细胞
  • 2025.11.27
  • windows和linux下jar包graalvm打包生native程序 - yebinghuai-qq
  • P31_完整的模型验证套路
  • 赋能第一期 新员工角色转换主题培训
  • DS优化建图
  • 深入解析:Leetcode 43
  • 解读Spring Boot框架中不同位置抛出异常的处理流程
  • tips:LVGL 定时器触发周期不准确(实际间隔 设定间隔)问题排查与解决方案
  • 第6章 基于应变的单轴疲劳分析 11