zoukankan      html  css  js  c++  java
  • POJ 1804

    题目:http://poj.org/problem?id=1804

    大意:给你一串数字,排序。求出最少的交换次数  

    我用归并做的

    #include<iostream>
    #include<cstring>
    using namespace std;
    int aa[500010],bb[500010];
    long long  s=0;
    void merge(int l,int m,int r)
    {
         int i=l,j=m+1,t=0;
         while(i<=m&&j<=r)
         {
              if(aa[i]>aa[j])
              {
                   bb[t++]=aa[j++];
                   s+=m-i+1;
              }
              else
              {
                   bb[t++]=aa[i++];
              }
         }
         while(i<=m)
              bb[t++]=aa[i++];
         while(j<=r)
              bb[t++]=aa[j++];
         for(int i=0;i<t;i++)     //并!不能省,否则归并排序不完整
         {
              aa[l+i]=bb[i];
         }
    }
    void Msort (int L,int R)   
    {
        int cen;
        if(L<R)
        { cen=(L+R)/2;
        Msort(L,cen);
        Msort(cen+1,R);
        merge(L,cen,R);
    
        }
    
    }
    void merge_sort(int *a,int n)
    { Msort(0,n-1);     //做接口;
    
    }
    int main()
    {
        int n,d=1;
        cin>>n;
    
        for(int i=0;i<n;i++)
        {   memset(aa,0,sizeof(aa));
            memset(bb,0,sizeof(bb));
    
           int q;
            cin>>q;
    
            if(q==0)break;
    
        for(int j=0;j<q;j++)
        {
            cin>>aa[j];
        }
        merge_sort(aa,q);
    cout<<"Scenario #"<<d<<':'<<endl;
        cout<<s<<endl<<endl;
         s=0;d++;
    
         }
        return 0;
    
    }
  • 相关阅读:
    git命令
    svg学习系列02-简单的svg图形和线条
    svg学习系列01-svg简介
    jQuery分页插件
    svg简介
    css3选择器
    sublime使用
    HTML5新特性
    html新的语义化标签和表单控件
    DOM详解
  • 原文地址:https://www.cnblogs.com/jin-nuo/p/5511285.html
Copyright © 2011-2022 走看看