[JSOI2008] 完美的對稱

來源:互聯網
上載者:User

標籤:i++   集合   中心   自動   四捨五入   this   div   double   ++   

題目描述

在峰會期間,必須使用許多保鏢保衛參加會議的各國代表。代表們除了由他自己的隨身保鏢保護外,組委會還指派了一些其他的特工和阻擊手保護他們。為了使他們的工作卓有成效,使被保衛的人的安全儘可能得到保障,保鏢被分配到被保護人的各個方向。保鏢的最佳站立位置應該是這樣的:被保護人應站在所有保鏢的對稱中心。但是,只要被保護人一移動,保鏢就很難根據要人的新位置調整位置。大多數的特工都很難對此作出即時調整。因此,安全部長決定將該過程逆轉一下,保鏢先站好自己的位置,然後要人在他們的對稱中心找到合適的位置。如果要人隨便走動,我們就對他的安全不必負責。你的工作是使這個過程自動操作。給出一組N個點(保鏢的位置),你要找出它們的對稱中心S,在這兒被保護人將相對安全。下面以此類推。首先我們給定一點A以及對稱中心S,點A‘是點A以S為對稱中心形成的像點,即點S是線段AA‘的對稱中心。點陣組(X)以S為中心的像點是由每個點的像點組成的點陣組。X是用來產生對稱中心S的,即點陣X以S為中心的像點的集合即為點陣X本身。

輸入輸出格式

輸入格式:

 

輸入檔案第一行是一個整數N,1<=N<=20000,接下來的N行每行包含用空格隔開的兩個整數Xi和Yi,-100000<=Xi,Yi<=100000,表示這組點陣中第I個點的笛卡爾座標值。

因為任何兩個保鏢都不會站在同一個位置上,所以在給定的作業中,任何兩點都不相同。但注意保鏢可以站在被保護人相同的位置。

 

輸出格式:

 

輸出檔案僅有一行。如果給定的點陣能產生一個對稱中心,則輸出“V.I.P. should stay at (x,y).”,其中X和Y代表中心的笛卡爾座標值,格式為四捨五入保留至小數點後一位。

如果該組點陣無對稱中心,輸出"This is a dangerous situation!",注意輸出時除了兩個單詞之間用一個空格隔開外,不要輸出多餘空格。

 

輸入輸出範例輸入範例#1:
81 103 66 86 23 -41 0-2 -2-2 4
輸出範例#1:
V.I.P. should stay at (2.0,3.0).
 

 

按照點的座標從小到大排序,然後找出每一個點對的中點,判斷即可。

 1 #include <cstdio> 2 #include <iostream> 3 #include <algorithm> 4 using namespace std; 5  6 struct point { 7     int x,y; 8 } a[20050]; 9 10 int n;11 double xx,yy;12 bool f=1;13 14 bool cmp(const point m,const point n) {15     return (m.x<n.x || (m.x==n.x && m.y<n.y));16 }17 18 int main() {19     scanf("%d",&n);20     for (int i=1; i<=n; i++) scanf("%d%d",&a[i].x,&a[i].y);21     sort(a+1,a+n+1,cmp);22     xx=(double)(a[1].x+a[n].x)/2;23     yy=(double)(a[1].y+a[n].y)/2;24     for (int i=2; i<=n-1; i++) {25         double x2=(double)(a[i].x+a[n+1-i].x)/2;26         double y2=(double)(a[i].y+a[n+1-i].y)/2;27         if (x2!=xx || y2!=yy) {f=0 ; break;}28     }29     if (f) printf("V.I.P. should stay at (%.1lf,%.1lf).",xx,yy); 30         else printf("This is a dangerous situation!");31     return 0;32 }

 

[JSOI2008] 完美的對稱

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.