zoukankan      html  css  js  c++  java
  • CF1374F Cyclic Shifts Sorting(选择排序)

    题意:

    一次操作,可以使得一个三元组往右旋转一格,请你在N*N次操作以内使得一个序列变得有序。

    题解:

    模拟一个选择排序的过程,每次把之后最小的元素换到当前位置,正反做两遍。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=505;
    int a[maxn]; 
    int t;
    int n;
    int tot=0;
    vector<int> ans;
    void R (int u) {
        //旋转以u为起点的三元组
        ans.push_back(u);
        tot++;
        int t1=a[u];
        int t2=a[u+1];
        int t3=a[u+2];
        a[u]=t3;
        a[u+1]=t1;
        a[u+2]=t2;
    }
    int main () {
        scanf("%d",&t);
        while (t--) {
            ans.clear();
            tot=0;
            scanf("%d",&n);
            for (int i=1;i<=n;i++) scanf("%d",&a[i]);
            for (int i=1;i<=n-2;i++) {
                int u;
                int Min=1e9;
                for (int j=i;j<=n;j++) {
                    if (a[j]<Min) Min=a[j],u=j;  
                }
                while (u>=i+2) R(u-2),u-=2;
                if (u==i+1) {
                    R(i);
                    R(i);
                    continue;
                }
            }
            for (int i=n;i>=3;i--) {
                int u;
                int Max=-1;
                for (int j=i;j>=1;j--) {
                    if (a[j]>Max) Max=a[j],u=j;  
                }
                while (u<=i-2) R(u),R(u),u+=2;
                if (u==i-1) {
                    R(i-2);
                    continue;
                }
            }
            for (int i=1;i<n;i++) if (a[i]>a[i+1]) tot=-1;
            printf("%d
    ",tot);
            if (tot!=-1) {
                for (int i=0;i<ans.size();i++) printf("%d ",ans[i]);
                printf("
    ");
            }
        }
    }
  • 相关阅读:
    sublime text 2安装及使用
    C陷阱与缺陷之语法陷阱
    上门洗车APP --- Androidclient开发 之 项目结构介绍
    编写语法分析程序
    TCP header
    boost事件处理
    TP-LINK无线路由器WR340G+ 54M支持WDS
    300M无线路由器 TL-WR842N
    python 2.7 支持dict comprehension
    100M 宽带办理
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/13209212.html
Copyright © 2011-2022 走看看