Codeforces Round #618 (Div. 1)B(几何,观察规律)

观察猜测这个图形是中心对称图形是则YES,否则NO

 1 #define HAVE_STRUCT_TIMESPEC
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 pair<long long,long long>pr[100007];
 5 int main(){
 6     ios::sync_with_stdio(false);
 7     cin.tie(NULL);
 8     cout.tie(NULL);
 9     int n;
10     cin>>n;
11     for(int i=1;i<=n;++i){
12         cin>>pr[i].first>>pr[i].second;
13         pr[i].first=2*pr[i].first;
14         pr[i].second=2*pr[i].second;
15     }
16     if(n%2==1){//奇数点旋转180°一定不对称
17         cout<<"NO";
18         return 0;
19     }
20     pair<long long,long long>temp=make_pair((pr[1+n/2].first+pr[1].first)/2,(pr[1+n/2].second+pr[1].second)/2);//找到重心
21     for(int i=1;i<=n/2;++i){
22         pair<long long,long long>res=make_pair((pr[i+n/2].first+pr[i].first)/2,(pr[i+n/2].second+pr[i].second)/2);
23         if(temp.first!=res.first||temp.second!=res.second){//如果重心不在一个点,则不是中心对称图形
24             cout<<"NO";
25             return 0;
26         }
27     }
28     cout<<"YES";
29     return 0;
30 }

 

posted @ 2020-02-10 20:59  sewage  阅读(174)  评论(0编辑  收藏  举报