求助最小表示法模板

P1368 【模板】最小表示法

@[hewo](/user/64976) ```cpp #include<bits/stdc++.h> using namespace std; const int maxn=7e5; int n; int s[maxn]; int get_min(){ // n=; for(int i=0;i<n;i++){ s[n+i]=s[i]; } int i=1,j=2,k=0; while(i<=n && j<=n){ for(k=0;k<n&&s[i+k]==s[j+k];k++); s[i+k]>s[j+k] ? i=i+k+1 : j=j+k+1; if(i==j) j++; } return min(i,j); } signed main(void){ cin>>n; for(int i=0;i<n;i++){ cin>>s[i]; } int k=get_min(); for(int i=0;i<n;i++){ printf("%d ",s[k+i]); } return 0; } ```
by 柠檬布丁吖 @ 2023-01-16 21:24:39


|