在你的代码中,存在一个问题。在使用 a 向量存储输入数据时,使用了 push_back() 函数向末尾添加元素。然而,在之后的排序过程中,你试图使用索引1到n来访问这些元素。
由于向量 a 的索引从0开始,默认情况下只有一个元素,所以无法正确访问索引1到n的范围。因此,在循环和排序前,请确保为 a 向量预分配足够的大小。
以下是修正后的代码:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 1e5 + 10;
int n;
vector<vector<int>> a(N, vector<int>(2));
vector<vector<int>> ans;
int main()
{
cin >> n;
for(int i = 0; i < n; i++)
{
int x, y;
cin >> x >> y;
a[i] = {x, y};
}
sort(a.begin(), a.begin() + n);
int st = -1e9 - 1, ed = 1e9 + 1;
for(int i = 0; i < n; i++)
{
if(ed < a[i][0])
{
if(st != -1e9 - 1)
ans.push_back({st, ed});
st = a[i][0];
ed = a[i][1];
}
else
ed = max(ed, a[i][1]);
}
if(st != -1e9 - 1)
ans.push_back({st, ed});
cout << ans.size() << endl;
return 0;
}
通过以上修改,你应该可以得到正确的结果。
内容由零声教学AI助手提供,问题来源于学员提问




