#34182: TLE 了, 怎麼解。


yuyantang921002@gmail.com (123456789)

學校 : 不指定學校
編號 : 195268
來源 : [140.118.135.213]
最後登入時間 :
2023-03-03 11:23:49
d750. 11321 - Sort! Sort!! and Sort!!! -- UVa11321 | From: [140.118.135.216] | 發表日期 : 2023-03-03 21:13

#include <iostream>
using namespace std;

int main()
{
    int n,m,i,j;
    while(cin>>n>>m)
    {
        if(n==0&&m==0)
        {
            break;
        }
        int arr[n],t;
        for(i=0;i<n;i++)
        {
            cin>>arr[i];
        }
        for(i=0;i<n-1;i++)
        {
            for(j=0;j<n-i-1;j++)
            {
                if((arr[j]%m)<(arr[j+1]%m))
                {

                }
                else if((arr[j]%m)>(arr[j+1]%m))
                {
                    t=arr[j+1];
                    arr[j+1]=arr[j];
                    arr[j]=t;
                }
                else if((arr[j]%m)==(arr[j+1]%m))
                {
                    if((arr[j]&1)==0&&(arr[j+1]&1)!=0)//偶
                    {
                        t=arr[j+1];
                        arr[j+1]=arr[j];
                        arr[j]=t;
                    }
                    else if((arr[j]&1)==0 && (arr[j+1]&1)==0 && arr[j]>arr[j+1])
                    {
                        t=arr[j+1];
                        arr[j+1]=arr[j];
                        arr[j]=t;
                    }
                    else if((arr[j]&1)!=0 && (arr[j+1]&1)!=0 && arr[j]<arr[j+1])
                        {
                        t=arr[j+1];
                        arr[j+1]=arr[j];
                        arr[j]=t;
                    }
                }
            }
        }
        for(i=0;i<n;i++)
        {
            printf("%d\n",arr[i]);
        }
    }
    printf("0 0");
}

 
#34209: Re: TLE 了, 怎麼解。


rollfc (胖胖貓)

學校 : 國立清華大學
編號 : 81012
來源 : [36.230.171.92]
最後登入時間 :
2024-05-06 18:30:39
d750. 11321 - Sort! Sort!! and Sort!!! -- UVa11321 | From: [111.249.85.14] | 發表日期 : 2023-03-06 01:12

原文吃掉,先說結論:堅持採用 N^2 Sort 的話就把 SelectionSort 改為 InsertionSort,最保險就是使用內建的 QuickSort 傳入 lambda 函數

兩者在最糟糕的情況時雖然都是 N^2 沒錯,但是當了解底層實作方式可以發現 SelectionSort 不管哪種情況都是 N^2 但是 InsertionSort 最好是 O(N)

實作後可以壓線過關,是說最近 Judge 越來越慢不知道是不是開太多競賽的關係...?

 
ZeroJudge Forum