求助
查看原帖
求助
1099150
lyh4楼主2024/3/8 20:37
#include<bits/stdc++.h>
using namespace std;

long long tmp,last2,n,num1[10000005],num2[10000005],ans,it1,it2,num,ort[10000005];
void read(long long &x)
{ 
	int f=1;x=0;char s=getchar();
	while(s < '0' || s >  '9' )
    {
        if(s == '-')
        {
            f = -1;
            s = getchar();
        }
	}
    while(s >= '0' && s <= '9')
    {
        x = x*10+s-'0';
        s = getchar();
    }
    x *= f;
}
int main()
{
    read(n);
    memset(ort,0,sizeof(ort));
    memset(num1,127,sizeof(num1));
    memset(num2,127,sizeof(num2));
    for(int i = 0; i < n; i++)
    {
        read(tmp);
        ort[tmp]++;
    }
    long long p = 0;
    for(long long i = 0; i < 10000005; i++)
    {
        for(long long j = 0; j < ort[i]; j++)
        {
            num1[p] = i;
            p++;
        }
    }
    /*for(int long long i = 0; i < n; i++)
    {
        cout <<num1[i]<<endl;
    }*/
    for(int l = 0; l < n-1; l++)
    {
        num = 0;
        num+=num1[it1]<num2[it2]?num1[it1++]:num2[it2++];
        num+=num1[it1]<num2[it2]?num1[it1++]:num2[it2++];
        num2[last2++] = num;
        ans+=num;
    }
    cout<<ans;
}

第四个测试点TLE,其他全AC。 第四个点数据范围很小,为何会TLE?如何优化?

2024/3/8 20:37
加载中...