当我尝试定义这个 vector< pair< int , pair<int, int> > > vp(n)
When i try to define this vector< pair< int , pair<int, int> > > vp(n)
输出中有给我0 0
#include <bits/stdc++.h>
#define fsv(i , n) for(int i = 0 ; i < n ; ++i)
using namespace std;
int main()
{
int n ;
cin >> n ;
vector< pair< int , pair<int, int> > > vp(n);
vector <int> v(n) ;
fsv(i , v.size())cin >> v[i];
for(int i = 0 ; i < n ; ++i){
for(int j = i+1 ; j < n-1 ; ++j){
vp.push_back(make_pair(abs(v[i]-v[j]) , make_pair(i,j)));
}
}
sort(vp.begin() , vp.end());
cout << vp[0].second.first << " " << vp[0].second.second;
}
此代码与代码强制问题相关,我知道还有其他方法...但我想问的是这是访问此类元素的正确方法吗?!
http://codeforces.com/contest/34/problem/A
问题是
vector< pair< int , pair<int, int> > > vp(n);
// ......................................^^^ n initial elements
用 n
个元素和 push_back()
你 add other n
初始化一个向量元素`.
排序后 v
,v[0]
元素(我想)是 n
.
的首字母之一
您应该创建一个空向量
vector< pair< int , pair<int, int> > > vp;
// ....................................^^ no more initial elements; empy!
并且,为了加快速度并避免多余的重定位,保留 n
作为大小(但不是必需的)
vp.reserve(n);
在推回 n
个元素之前。
题外话建议:请避免包含 not-standard header as
#include <bits/stdc++.h>
输出中有给我0 0
#include <bits/stdc++.h>
#define fsv(i , n) for(int i = 0 ; i < n ; ++i)
using namespace std;
int main()
{
int n ;
cin >> n ;
vector< pair< int , pair<int, int> > > vp(n);
vector <int> v(n) ;
fsv(i , v.size())cin >> v[i];
for(int i = 0 ; i < n ; ++i){
for(int j = i+1 ; j < n-1 ; ++j){
vp.push_back(make_pair(abs(v[i]-v[j]) , make_pair(i,j)));
}
}
sort(vp.begin() , vp.end());
cout << vp[0].second.first << " " << vp[0].second.second;
}
此代码与代码强制问题相关,我知道还有其他方法...但我想问的是这是访问此类元素的正确方法吗?! http://codeforces.com/contest/34/problem/A
问题是
vector< pair< int , pair<int, int> > > vp(n);
// ......................................^^^ n initial elements
用 n
个元素和 push_back()
你 add other n
初始化一个向量元素`.
排序后 v
,v[0]
元素(我想)是 n
.
您应该创建一个空向量
vector< pair< int , pair<int, int> > > vp;
// ....................................^^ no more initial elements; empy!
并且,为了加快速度并避免多余的重定位,保留 n
作为大小(但不是必需的)
vp.reserve(n);
在推回 n
个元素之前。
题外话建议:请避免包含 not-standard header as
#include <bits/stdc++.h>