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];

    } 

  • 相关阅读:
    12.14 Daily Scrum
    12.13 Daily Scrum
    12.12 Daily Scrum
    12.11 Daily Scrum
    12.10 Daily Scrum
    12.9 Daily Scrum
    12.8 Daily Scrum
    M1事后分析汇报以及总结
    alpa开发阶段团队贡献分
    第9周团队作业
  • 原文地址:https://www.cnblogs.com/liuxin13/p/4383990.html
Copyright © 2011-2022 走看看