这个代码还有药可救吗?
查看原帖
这个代码还有药可救吗?
741732
small_Dongpo楼主2024/4/28 19:53

本蒟蒻,脑子或许有坑,非得用 nlogn 过这道题。。。

于是,尽自己所能,写了一份常数很小很小的代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;

typedef long long l;
priority_queue<l, vector<l>, greater<l>> q;

inline l read() {
	register l x=0;char ch=getchar();
	while(ch<'0'||ch>'9')ch=getchar();
	while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
	return x;
}

inline void print(register const l &x) {
    if (x > 9) {
        print(x / 10);
    }
    putchar(x % 10 + '0');
}

int main(){
    register l n, sum = 0;
    n = read();
    for (l i = 1; i <= n; ++i){
        register l x;
        x = read();
        q.push(x);
    }
    while (true) {
        register l x = q.top();
        q.pop();
        if (q.empty()) break;
        x += q.top();
        q.pop();
        sum += x;
        q.push(x);
    }
    print(sum);
}

但是,还是 TLE 了。

悬关,在时间复杂度不变的情况下,把这份代码改成 AC 代码。

2024/4/28 19:53
加载中...