算是学了下map的用法
题意就是找到最多的中心点,然后剩下就是得到没有匹配到最多中心点的数,这就是需要添加的点数
#include<bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;
typedef map<PII, int> MII;
MII::iterator iter;
const int N = 1010;
PII p[N];
MII M;
int n;
int main()
{
scanf("%d", &n);
for(int i = 1; i <= n; i++)
scanf("%d%d", &p[i].first, &p[i].second);
int maxv = 0;
for(int i = 1; i <= n; i++) //双层循环都从1开始到n保证可以遍历每个点的边以至于直接得到匹配到最多中心点的点数
for(int j = 1; j <= n; j++){
int xc = p[i].first + p[j].first;
int yc = p[i].second + p[j].second;
M[{xc, yc}]++; //该元素不存在时直接加入map即可
if(M[{xc, yc}] > maxv) maxv = M[{xc, yc}];
}
int res = n - maxv;
printf("%d\n", res);
return 0;
}