The Preliminary Contest for ICPC Asia Xuzhou 2019 K. Center

題意:n個點,求最小加上幾個點讓所有點關於一個點(不需要是點集裏面的點)中心對稱

題解:雙重循環枚舉,把中點記錄一下,結果是n-最大的中點

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define mem(s) memset(s, 0, sizeof(s))
const int INF = 0x3f3f3f3f;
const double eps = 1e-8;
const int maxn = 1000+5;
const int mod = 998244353;
pair<int,int>P[maxn],tmp;
map<pair<int,int>,int>mp;
int main() 
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d%d",&P[i].first,&P[i].second);
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            mp[make_pair((P[i].first+P[j].first),(P[i].second+P[j].second))]+=2;
        }
    }
    map<pair<int,int>,int>::iterator it;
    int ans=0;
    for(it=mp.begin();it!=mp.end();it++){
        ans=max(it->second,ans);
    }
    cout<<n-ans<<endl;
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章