在你的代码中,存在一个问题。在排序时,你使用了 sort(a.begin(), a.begin() + n) 这样的语法来对 a 进行排序。然而,这是不正确的用法。
应该使用 sort(a.begin() + 1, a.begin() + n + 1) 来对从索引1到n的部分进行排序。因为向量 a 的有效索引范围是从1到n。
以下是修正后的代码:
#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 = 1; i <= n; i++) cin >> a[i][0] >> a[i][1];
sort(a.begin() + 1, a.begin() + n + 1);
int st = -2e9, ed = 2e9;
for(int i = 1; i <= n; i++)
{
if(ed < a[i][0])
{
if(st != -2e9)
ans.push_back({st, ed});
st = a[i][0];
ed = a[i][1];
}
else
{
ed = max(ed, a[i][1]);
}
}
if(st != -2e9) ans.push_back({st, ed});
cout << ans.size() << endl;
return 0;
}
通过以上修改,你应该可以得到正确的结果。
内容由零声教学AI助手提供,问题来源于学员提问




