最小表示法模板题
/* 循环结构的最小字典序问题 最小表示发模板题 利用前面已经比较过的信息,从而pass掉某些答案,实现o1的查找 如果全部相同,那么一次查找就可以了 反之会进行跳转,跳到那个较小的地方 */ #include <bits/stdc++.h> using namespace std; const int M=6e5+5; int a[M]; int solve(int n) { int i=1,j=2,k=0; while(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)j++; k=0; } } return min(i,j); } int main() { int n;cin>>n; for(int i=1;i<=n;i++)cin>>a[i],a[i+n]=a[i]; int p=solve(n); for(int i=p;i<p+n;i++)cout<<a[i]<<' '; return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战