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

P3509 [POI 2010] ZAB-Frog[单调队列+倍增快速幂思想]

P3509 [POI 2010] ZAB-Frog

时间限制: 1.00s 内存限制: 125.00MB

复制 Markdown

中文

退出 IDE 模式

题目描述

在一个特别长且笔直的 Byteotian 小溪的河床上,有 n 块石头露出水面。它们距离小溪源头的距离分别为 p1​<p2​<⋯<pn​。一只小青蛙正坐在其中一块石头上,准备开始它的跳跃训练。每次青蛙跳跃到距离它所在石头第 k 近的石头上。具体来说,如果青蛙坐在位置 pi​ 的石头上,那么它将跳到这样的 pj​ 上,使得:

∣{pa​:∣pa​−pi​∣<∣pj​−pi​∣}∣≤k and ∣{pa​:∣pa​−pi​∣≤∣pj​−pi​∣}∣>k

如果 pj​ 不是唯一的,那么青蛙在其中选择距离源头最近的石头。对于每一块石头分别计算,若青蛙从这块石头开始跳跃,经过 m 次跳跃后最终会停留在哪一块石头上?

输入格式

标准输入的第一行包含三个整数 n、k 和 m(1≤k<n≤1000000,1≤m≤1018),用空格分隔,分别表示石头的数量、参数 k 和计划跳跃的次数。第二行包含 n 个整数 pj​(1≤p1​<p2​<⋯<pn​≤1018),用空格分隔,表示小溪河床上连续石头的位置。

输出格式

你的程序应在标准输出上打印一行,包含 n 个整数 r1​,r2​,⋯,rn​,用空格分隔。数字 ri​ 表示从输入顺序中的第 i 块石头开始跳跃 m 次后,青蛙最终停留的石头编号。

显示翻译

题意翻译

输入输出样例

输入 #1复制运行

5 2 4 1 2 4 7 10

输出 #1复制运行

1 1 3 1 1

说明/提示

样例 #1 解释:

图中展示了青蛙从每块石头跳跃(单次跳跃)到的位置。

题面翻译由 ChatGPT-4o 提供

首先单调队列维护第k大的 首先维护一个长度为k的窗口 我们只需要比较左端右端 如果右端+1 的位置小于左端 那么窗口右滑 直到划不动 然后比较左右的大小 确定跳跃一步的位置

然后根据m开始倍增跳越 类似于快速幂的做法 如果是奇数 那么先跳一次 偶数的话那就令步长连续跳跃两次 也就是步长翻倍 可以类比快速幂理解;

#include <bits/stdc++.h> using namespace std; const int N=1e6+5; #define int long long int net[N],net2[N],ans[N],a[N]; long long n,k,m; signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>k>>m; for(int i=1;i<=n;i++)cin>>a[i],ans[i]=i; int l=1,r=k+1; for(int i=1;i<=n;i++){ while(r+1<=n&&a[r+1]-a[i]<a[i]-a[l])l++,r++; int disr=a[r]-a[i],disl=a[i]-a[l]; if(disl>=disr)net[i]=l; else net[i]=r; } while(m){ if(m&1) for(int i=1;i<=n;i++)ans[i]=net[ans[i]]; for(int i=1;i<=n;i++)net2[i]=net[i]; for(int i=1;i<=n;i++)net[i]=net2[net2[i]]; m>>=1; } for(int i=1;i<=n;i++) cout<<ans[i]<<' '; return 0; }
http://www.jsqmd.com/news/261063/

相关文章:

  • OpenCode:零配置终端AI助手的终极使用指南
  • GLM-ASR-Nano-2512教程:模型安全与隐私保护
  • 从噪音中提取纯净人声|FRCRN语音降噪镜像助力AI音频处理
  • RexUniNLU金融情报:企业关系图谱
  • Open-LLM-VTuber聊天记录管理终极指南:如何永久保存和智能切换对话历史
  • OpenCore Legacy Patcher完整教程:老款Mac升级终极指南
  • OpenCode实战指南:解锁终端AI编程新体验
  • 告别手动调参!YOLOv10自动超参优化实测真香
  • 突破软件试用限制的终极解决方案:从原理到实战全解析
  • 用Voice Sculptor捏声音,基于LLaSA和CosyVoice2的语音合成实践
  • 基于Altium Designer的原理图版本控制策略
  • AtlasOS系统优化全攻略:释放Windows隐藏性能的终极指南
  • 深入掌握CodeAI终端智能助手的实战技巧
  • 3步彻底解决Cursor试用限制:从提示到无限使用的完整指南
  • 历史人物复活:用AWPortrait-Z还原古代肖像
  • 轻量级AI对话系统搭建:Qwen1.5-0.5B-Chat全流程部署教程
  • HY-MT1.5-1.8B技术揭秘:小模型高效翻译的奥秘
  • GameBoost Pro:跨平台游戏性能优化工具的完整使用指南
  • 批量处理音频文件?这个ASR镜像太适合办公场景了
  • 无需GPU也能跑语义匹配|GTE轻量级CPU镜像全解析
  • Qwen3-4B与DeepSeek-R1对比:轻量级模型部署效率评测
  • 看完就想试!Qwen3-4B-Instruct-2507打造的50万字文档处理案例
  • 开源代码模型新星:IQuest-Coder-V1在企业开发中的落地实践
  • Qwen3-Embedding-4B部署省50%成本?弹性GPU实战案例
  • 3步搞定!OpenCode全平台极速安装手册:新手也能秒上手
  • 终极指南:如何快速解决小爱音箱本地音乐播放故障
  • 音乐歌词提取神器:5分钟掌握多平台歌词下载全攻略
  • Qwen3-VL-2B应用案例:工业机器人视觉引导
  • AtlasOS终极指南:重新定义Windows系统性能与隐私保护的完整方案
  • Mindustry深度指南:掌握自动化塔防的核心奥秘