zoukankan      html  css  js  c++  java
  • POJ 2299 UltraQuickSort

    http://poj.org/problem?id=2299

    看到题目想到的就是归并排序....然后文哥告诉我是树状数组,等下再去看看树状数组怎么写,会可以求出逆序对。

    View Code
     1 #include <iostream>
     2 using namespace std;
     3 const int maxn = 500005;
     4 long ans[maxn],fark[maxn];
     5 long long temp;
     6 void merge(int p,int q,int r)
     7 {
     8     int i,j,l;
     9     i=p;
    10     j=q+1;
    11     l=p;
    12     while(i<=q && j<=r)
    13     {
    14         if(ans[i]<=ans[j])
    15             fark[l++]=ans[i++];
    16         else
    17         {
    18             fark[l++]=ans[j++];
    19             temp+=q-i+1;
    20         }
    21     }
    22     while(i<=q)
    23     {
    24         fark[l++]=ans[i++];
    25     }
    26     while(j<=r)
    27     {
    28         fark[l++]=ans[j++];
    29     }
    30     for(i=p;i<=r;i++)
    31     ans[i]=fark[i];
    32 }
    33 void sort_merge(int p,int r)
    34 {
    35     int q;
    36     if(p<r)
    37     {
    38         q=(p+r)/2;
    39         sort_merge(p,q);
    40         sort_merge(q+1,r);
    41         merge(p,q,r);
    42     }
    43 }
    44 int main()
    45 {
    46     int n,i;
    47     while(cin>>n,n)
    48     {
    49         for(i=0;i<n;i++)
    50         cin>>ans[i];
    51         temp=0;
    52         sort_merge(0,n-1);
    53         cout<<temp<<endl;
    54     }
    55     return 0;
    56 }
  • 相关阅读:
    [Heoi2013]Alo
    10.24 考试
    第八周作业
    第七周作业
    第六周作业
    第五周作业
    第四周作业
    求最大值及其下标
    查找整数
    抓老鼠啊~亏了还是赚了?
  • 原文地址:https://www.cnblogs.com/yoru/p/2697476.html
Copyright © 2011-2022 走看看