优化代码避免TLE:计算所有 f(l, r) 的和
这段代码的时间复杂度为 $O(n^2)$,在数据量较大时会超时(TLE)。可以通过优化计算所有 $f(l, r)$ 的和的过程来降低时间复杂度。 下面是优化后的代码: ```cpp #include <iostream> #include <vector> #include <algorithm> const int MOD = 998244353; // 计算所有 f(l, r) 的和 long long calculateSum(const std::vector<int>& a, const std::vector<int>& b) { int n = a.size(); std::vector<long long> c(n); // 计算 c[i] = a[i] * b[i] for (int i = 0; i < n; ++i) { c[i] = (long long)a[i] * b[i] % MOD; } long long sum = 0; // 计算每个 c[i] 在所有 f(l, r) 中出现的次数 for (int i = 0; i < n; ++i) { // 计算 c[i] 出现的次数 long long count = (long long)(i + 1) * (n - i) % MOD; sum = (sum + c[i] * count % MOD) % MOD; } return sum; } int main() { int n; std::cin >> n; std::vector<int> a(n), b(n); for (int i = 0; i < n; ++i) { std::cin >> a[i]; } for (int i = 0; i < n; ++i) { std::cin >> b[i]; } // 对 a 数组从小到大排序 std::sort(a.begin(), a.end()); // 对 b 数组从大到小排序 std::sort(b.begin(), b.end(), std::greater<int>()); long long minSum = calculateSum(a, b); std::cout << minSum << std::endl; return 0; } ``` ### 代码解释 1. **计算 $c[i] = a[i] * b[i]$**:首先计算 $c[i] = a[i] * b[i]$,存储在 `c` 数组中。 2. **计算每个 $c[i]$ 在所有 $f(l, r)$ 中出现的次数**:对于 $c[i]$,它在所有 $f(l, r)$ 中出现的次数为 $(i + 1) * (n - i)$。因为 $l$ 可以取 $0$ 到 $i$ 共 $i + 1$ 个值,$r$ 可以取 $i$ 到 $n - 1$ 共 $n - i$ 个值。 3. **计算所有 $f(l, r)$ 的和**:将每个 $c[i]$ 乘以它出现的次数,然后累加到 `sum` 中。 ### 复杂度分析 - **时间复杂度**:$O(n)$,主要是计算 $c[i]$ 和每个 $c[i]$ 出现的次数。 - **空间复杂度**:$O(n)$,主要是存储 $c$ 数组。 ######[AI问答 | 765点数解答 | 2026-05-10 16:19:03]
- Python高效求逆序对:归并排序迭代优化与TLE根因分析(阿里通义 | 1754点数解答 | 2026-03-18 17:51:27)43
- Python 高效求解:让数列变身接龙数列最少需删多少数?(字节豆包 | 493点数解答 | 2025-12-13 10:25:59)79
- 深入解析格雷码生成算法:递归求解与代码实现(DeepSeek | 443点数解答 | 2026-01-05 12:21:49)76
- 无名杀1.11.0:三国杀“韬晦”技能代码详解,开发避坑指南! (百度文心 | 1168点数解答 | 2026-01-12 21:02:27)90
- 深入探究:n 位格雷码中编号 k 二进制串的求解算法与实现(DeepSeek | 726点数解答 | 2026-01-13 12:31:37)75
- Python逆序对AC终极指南:避开getrandom雷区,迭代归并+安全IO稳过所有大数据(阿里通义 | 1823点数解答 | 2026-03-18 17:53:44)41
- 解决代码 TLE 问题:Python 斐波那契数列优化示例(字节豆包 | 637点数解答 | 2026-04-04 20:09:51)20
- 优化代码解决 TLE 问题:从 $O(n^3)$ 到 $O(n^2)$(字节豆包 | 814点数解答 | 2026-04-04 20:10:30)21
- 解析React 15与Vue 2:从O(n^3)到O(n),Diff算法时间复杂度计算及性能对比 (阿里通义 | 379点数解答 | 2023-11-09 01:49:19)357
- 缜密逻辑,全新无名杀“风餐”技能代码精心打造与深度解析 (字节豆包 | 469点数解答 | 2025-04-05 11:37:06)274
- 精准优化:明确需求,开启高效提升之旅! (字节豆包 | 52点数解答 | 2026-02-09 16:44:46)64
- 代码再升级:优化版“获取dump”代码,多机制保障数据读取与保存(字节豆包 | 734点数解答 | 2026-02-10 01:23:31)86