为什么用 while 能比用 for 快这么多
  • 板块学术版
  • 楼主lzy20091001
  • 当前回复7
  • 已保存回复8
  • 发布时间2025/7/23 16:24
  • 上次更新2025/7/23 20:32:33
查看原帖
为什么用 while 能比用 for 快这么多
932039
lzy20091001楼主2025/7/23 16:24
l = begin + 1;
while (l <= r)
{
    int i = q.top().i, j = q.top().j;
    q.pop();
    if (j < n)
        q.push({i, j + 1});
    cout << a[i] + b[j] << " ";
    l++;
}
for (int k = begin + 1; k <= r; k++)
{
    int i = q.top().i, j = q.top().j;
    q.pop();
    if (j < n)
        q.push({i, j + 1});
    cout << a[i] + b[j] << " ";
}

整个程序的时间复杂度为 O(nlogn)\operatorname{O}(n \log n),以上是其中的一个部分。用前者能轻松跑过 n=106n = 10 ^ 6,用后者连 n=105n = 10 ^ 5 都会 TLE。

太抽象了,实在看不懂,有没有大佬能解释一下原理?题目保证 rbegin 的差不大于 10510 ^ 5

2025/7/23 16:24
加载中...