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

洛谷 P1368:工艺 ← 双指针 + 解环成链

【题目来源】
https://www.luogu.com.cn/problem/P1368

【题目描述】
小敏和小燕是一对好朋友。
他们正在玩一种神奇的游戏,叫 Minecraft。
他们现在要做一个由方块构成的长条工艺品。但是方块现在是乱的,而且由于机器的要求,他们只能做到把这个工艺品最左边的方块放到最右边。
他们想,在仅这一个操作下,最漂亮的工艺品能多漂亮。
两个工艺品美观的比较方法是,从头开始比较,如果第i个位置上方块不一样那么谁的瑕疵度小,那么谁就更漂亮,如果一样那么继续比较第 i+1 个方块。如果全都一样,那么这两个工艺品就一样漂亮。

【输入格式】
第一行一个整数 n,代表方块的数目。
第二行 n 个整数,每个整数按从左到右的顺序输出方块瑕疵度的值,保证其小于 30。

【输出格式】
一行 n 个整数,代表最美观工艺品从左到右瑕疵度的值。​​​​​​​

【输入样例】
10
10 9 8 7 6 5 4 3 2 1​​​​​​​

【输出样例】
1 10 9 8 7 6 5 4 3 2​​​​​​​

【数据范围】
对于 20% 的数据,n≤1000;
对于 40% 的数据,n≤10^4;
对于 100% 的数据,n≤3×10^5。

【算法分析】
● 本题是寻找字符串(或序列)最小表示的经典问题。
● 算法原理:利用数组倍增处理环形结构,或称之为解环成链,即将环形结构转为其 2 倍长度的线性结构。通过 while 循环进行双指针比较,i 和 j 分别代表当前竞争最小起始点的两个候选下标。当发现失配时,根据大小关系利用性质 i+=k+1 或 j+=k+1 快速跳过不可能成为答案的区间,从而实现线性扫描。最终输出从 min(i, j) 开始的 n 个元素。

【算法代码】

#include<bits/stdc++.h>
using namespace std;const int maxn=6e5+5;
int a[maxn];
int n;int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n;for(int i=0; i<n; i++) {cin>>a[i];a[i+n]=a[i]; //auxiliary sequence of length 2n}int i=0,j=1; //Two starting positionsint k=0; //Indicates the offsetwhile(i<n && j<n && k<n) {if(a[i+k]==a[j+k]) k++;else {if(a[i+k]>a[j+k]) i+=k+1;else j+=k+1;if(i==j) i++;k=0;}}int p=min(i,j);for(int q=0; q<n; q++) {cout<<a[p+q]<<" ";}return 0;
}/*
in:
10
10 9 8 7 6 5 4 3 2 1out:
1 10 9 8 7 6 5 4 3 2
*/



【参考文献】
https://mp.weixin.qq.com/s/o9O35iU_GL6LeRvNSfuxog
https://www.luogu.com.cn/problem/solution/P1368


 

http://www.jsqmd.com/news/359451/

相关文章:

  • Redis缓冲区溢出及解决方案
  • C++ 内存避坑指南:如何用移动语义和智能指针解决“深拷贝”与“内存泄漏”
  • ros2-赵虚左老师讲义获取
  • 以太网终端主机常用的Command
  • 博泰车联网智能座舱 Android 开发工程师的核心能力与实战挑战
  • 简单制作公司固定资产管理图 新手画图也能快速上手
  • PADS 多层板设计时怎么设置满足3W间距 或 不在某参考层布线
  • 企业级应用:Copilot在团队协作开发中的落地实践
  • 为什么企业都在转向信创RFID?对比传统条码的惊人优势揭秘
  • Diff2Flow中扩散和流匹配的对齐探索
  • 从零学网络安全 - 数据库安全与 SQL 注入(一)数据库基础
  • 轻松绘制合同审批流程图画图操作便捷不费力超省事
  • PADS 扇孔设置 扇孔到BGA焊盘内部解决办法
  • AI智能体实际应用场景盘点:从自动化办公到复杂决策的智能体部署流程图
  • 省心绘制财务核算流程图零门槛操作画图超便捷高效
  • LLMs之DataPreparation:《Can LLMs Clean Up Your Mess? A Survey of Application-Ready Data Preparation wi
  • LLMs之RL之SAR:《Self-Aligned Reward: Towards Effective and Efficient Reasoners》翻译与解读
  • 省心设计装修平面布局图在线画图工具一键生成超好用
  • 大语言模型长上下文技术突破:如何处理超长文本的注意力机制与架构图解
  • BISHI24 谐距下标对
  • 固态硬盘“喊冤”:这锅我不背!——重装系统真的能把我搞趴下?
  • 高效制作会计账务处理流程图 新手画图零门槛超省心
  • 大数据架构中的数据集成:CDC技术深度解析
  • 深度解析SWIFT大额跨境转账:流程拆解与资金拆分的核心逻辑 - 指南
  • 腾讯云轻量服务器 + OpenClaw 部署全攻略:从购买到飞书接入
  • HiNeRV 隐式神经编码环境搭建
  • Avalonia
  • 哪些招聘软件平台效果好?最新招聘平台权威排行
  • 上海黄金回收真实探店:终于找到靠谱的上海附近回收黄金店
  • RIFE 插帧模型环境搭建