• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            ACTime

            let's start
            隨筆 - 10, 文章 - 22, 評論 - 2, 引用 - 0
            數(shù)據(jù)加載中……

            POJ 2299 Ultra-QuickSort

            題目鏈接:http://acm.pku.edu.cn/JudgeOnline/problem?id=2299
            題目描述:求冒泡排序的交換次數(shù)
            所用算法:用歸并排序,求逆序數(shù)的個數(shù)
            提交情況:1次tle(直接冒泡排序n^2的復(fù)雜度,對于5000000的數(shù)據(jù)量,必然超時),1次wa(統(tǒng)計個數(shù)時整數(shù)溢出了),1a
            心得體會:初看題目很簡單,沒有往數(shù)據(jù)量方面想,直接冒泡計數(shù)提交,然后看著poj上一直running&&judging直到tle, 時限7000ms呀。沒做過逆序數(shù)的類似問題,而且題目本身分類也在排序那,然后考慮是不是能快排一下,比較排序前和排序后各個數(shù)的位置。考慮再三,發(fā)現(xiàn)解決不了。去論壇上瞄了一眼,看到可以用逆序數(shù)解,于是百度+算法導(dǎo)論,學(xué)到了如何用歸并排序計算逆序數(shù)的數(shù)目,寫成程序,中間還出現(xiàn)了一次wa,然后就ac了。我在看算法導(dǎo)論時,因為merge在書一開始講的,想平時排序都是快排為主流,就沒有仔細想過merge可能的變種,這道題充分印證了,即使merge本身可能用的不多,但分冶的思想?yún)s是無所不在
            類似題目:poj1804
             1 #include<iostream>
             2 #include<stdio.h>
             3 using namespace std;
             4 
             5 int num[500010];
             6 int left_t[500010];
             7 int right_t[500010];
             8 
             9 long long count=0;
            10 
            11 void merge(int a[],int p,int q,int r)
            12 {
            13     int n1=q-p+1;
            14     int n2=r-q;
            15     for(int i=1;i<=n1;i++)
            16     {
            17         left_t[i]=a[p+i-1];
            18     }
            19     for(int i=1;i<=n2;i++)
            20     {
            21         right_t[i]=a[q+i];
            22     }
            23     left_t[n1+1]=0x7fffffff;
            24     right_t[n2+1]=0x7fffffff;
            25 
            26     int i=1;
            27     int j=1;
            28     for(int k=p;k<=r;k++)
            29     {
            30         if(left_t[i]<=right_t[j])
            31         {
            32             a[k]=left_t[i];
            33             i=i+1;
            34         }
            35         else
            36         {
            37             a[k]=right_t[j];
            38             j=j+1;
            39             count+=n1-i+1;
            40         }
            41     }
            42 }
            43 
            44 void merge_sort(int a[],int p,int r)
            45 {
            46     if(p<r)
            47     {
            48         int q=(p+r)/2;
            49         merge_sort(a,p,q);
            50         merge_sort(a,q+1,r);
            51         merge(a,p,q,r);
            52     }
            53 }
            54 
            55 int main()
            56 {
            57     int n;
            58     scanf("%d",&n);
            59     while(n!=0)
            60     {
            61         for(int i=0;i<n;i++)
            62         {
            63             scanf("%d",&num[i]);
            64         }
            65         merge_sort(num,0,n-1);
            66         printf("%lld\n",count);
            67         count=0;
            68         scanf("%d",&n);
            69     }
            70 }

            posted on 2009-12-17 14:00 ACTime 閱讀(2683) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告

            国产成人无码精品久久久免费| 久久精品99久久香蕉国产色戒| 久久99精品国产麻豆| 色综合久久久久久久久五月| 精品久久久久香蕉网| 国内精品久久久久久久影视麻豆 | 四虎国产精品免费久久久| 国产精品久久久久久久| 国内精品久久久久久中文字幕| 色综合久久88色综合天天 | 久久精品卫校国产小美女| 久久九九有精品国产23百花影院| 亚洲精品国产自在久久| 久久精品国产99国产精品澳门 | 99国产欧美精品久久久蜜芽| 老司机国内精品久久久久| 久久免费看黄a级毛片| 国内精品伊人久久久久影院对白| 少妇高潮惨叫久久久久久| 久久亚洲2019中文字幕| 久久久一本精品99久久精品66| 久久播电影网| 国产伊人久久| 久久午夜电影网| 97久久超碰国产精品旧版| 99精品久久久久久久婷婷| 免费精品久久久久久中文字幕| 久久精品一区二区三区不卡| 色综合久久久久无码专区| 久久久久久久久久久| 怡红院日本一道日本久久 | 伊人丁香狠狠色综合久久| 久久亚洲美女精品国产精品| 久久久亚洲AV波多野结衣| 日日狠狠久久偷偷色综合96蜜桃 | 久久综合久久鬼色| 国产午夜精品理论片久久 | 久久99精品国产| 国产三级久久久精品麻豆三级 | 一本一本久久aa综合精品| 久久久无码精品亚洲日韩京东传媒 |