```cpp #include <iostream> #include <vector> #include <algorithm> // 计算最小操作次数的函数 int minOperations(std::vector<int>& nums, int n) { int opCount = 0; // 先对序列进行排序,方便后续处理 std::sort(nums.begin(), nums.end()); int i = 0; while (i < n) { int j = i + 1; // 找到相同数字的连续段 while (j < n && nums[j] == nums[i]) { j++; } // 如果连续段长度大于 1,直接删除 if (j - i > 1) { opCount++; i = j; } else { // 否则尝试与后面的数字交换 if (j < n) { std::swap(nums[i], nums[j]); opCount++; } i++; } } return opCount; } int main() { int t; std::cin >> t; while (t--) { int n; std::cin >> n; std::vector<int> nums(n); for (int i = 0; i < n; i++) { std::cin >> nums[i]; } std::cout << minOperations(nums, n) << std::endl; } return 0; } ``` 1. 注意输入数据的范围,尤其是序列长度和数字的取值范围。 2. 对于排序和交换操作,要确保逻辑的正确性,避免出现错误的结果。 3. 在处理多个测试数据时,要注意每次处理完后数据的重置和状态的更新。 [2024-12-21 15:27:41 | AI写代码神器 | 407点数解答]