奶牛合影

 

1.最小表示法裸题。

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cstring>
 5 #include<queue>
 6 using namespace std;
 7 
 8 const int maxn=300005;
 9 
10 int n,T;
11 int a[2*maxn];
12 
13 void print(int p,int q){
14     int ans=min(p,q);
15     for(int i=ans;i<ans+n;i++)
16         printf("%d%c",a[i],i+1==ans+n?'\n':' ');
17 }
18 
19 void solve(){
20     int i=0,j=1,k;
21     while(i<n&&j<n){
22         for(k=0;k<n;k++)
23             if(a[i+k]!=a[j+k]) break;
24         if(k==n) break;
25         if(a[i+k]>a[j+k]) i+=k+1;
26         else if(a[i+k]<a[j+k]) j+=k+1;
27         if(i==j) j++;
28     }
29     print(i,j);
30     //cout<<min(i,j)<<endl;
31 }
32 
33 int main()
34 {   cin>>T;
35     while(T--){
36         scanf("%d",&n);
37         for(int i=0;i<n;i++){
38             int tem;scanf("%d",&tem);
39             a[i]=tem;
40             a[i+n]=tem;
41         }
42         solve();
43     }
44     return 0;
45 }

 

转载于:https://www.cnblogs.com/zgglj-com/p/6878521.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值