zoukankan      html  css  js  c++  java
  • poj2299

    好吧,看到这个图片就知道是干什么的了,求逆序数- -

    可以用线段树,貌似还可以用归并排序,这题应该是考的归并排序,毕竟是递归分治- -
    基本上都忘了,再写一写试试吧。
    AC
    /////////////////////////////////////////////////////////////////////////////////////////////
    #include<stdio.h>

    #define maxn 500005

    int a[maxn], b[maxn];
    long long sum=0;

    void MergeSort(int a[], int N);
    void Merge(int a[], int N);

    int main()
    {
        int i, n;

        while(scanf("%d", &n), n)
        {
            for(i=0; i<n; i++)
                scanf("%d", &a[i]);

            sum=0;
            MergeSort(a, n);

            printf("%I64d ", sum);
        }

        return 0;
    }
    void MergeSort(int a[], int N)
    {
        if(N > 1)
        {
            MergeSort(a, N/2);
            MergeSort(a+N/2, N-N/2);
            Merge(a, N);
        }
    }
    void Merge(int a[], int N)
    {
        int i=0, j=N/2, k=0;
        int M=j;
        while(i < M && j<N)
        {
            if(a[i] > a[j])
            {
                b[k++] = a[j++];
                sum += M-i;
            }
            else
                b[k++] = a[i++];
        }

        while(i<M)
            b[k++] = a[i++];
        while(j<N)
            b[k++] = a[j++];

        for(i=0; i<N; i++)
            a[i] = b[i];

    } 

  • 相关阅读:
    uinty之碰撞体,触碰体,刚体
    背景图片的设置和定位等
    margin padding
    《大道至简》之懒人的‘懒’
    灭霸—个人冲刺2(1)
    软件工程—个人作业(7.2)
    软件工程—个人作业(7.1)
    学习进度(13)
    学习进度(12)
    人月神话阅读笔记02
  • 原文地址:https://www.cnblogs.com/liuxin13/p/4383990.html
Copyright © 2011-2022 走看看