標籤:mic 9.png 心形 組成 ble 移動 ios style 相同
題目描述
在峰會期間,必須使用許多保鏢保衛參加會議的各國代表。代表們除了由他自己的隨身保鏢保護外,組委會還指派了一些其他的特工和阻擊手保護他們。為了使他們的工作卓有成效,使被保衛的人的安全儘可能得到保障,保鏢被分配到被保護人的各個方向。
保鏢的最佳站立位置應該是這樣的:被保護人應站在所有保鏢的對稱中心。但是,只要被保
護人一移動,保鏢就很難根據要人的新位置調整位置。大多數的特工都很難對此作出即時調整。
因此,安全部長決定將該過程逆轉一下,保鏢先站好自己的位置,然後要人在他們的對稱中心找到合適的位置。如果要人隨便走動,我們就對他的安全不必負責。
你的工作是使這個過程自動操作。給出一組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).
說明
[JSOI2008]第二輪
卡了我一個多小時的省選題,居然是sort+O(N)判斷~~~我日,我咋也沒想到啊
1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #include<cstdio> 5 #include<cstdlib> 6 using namespace std; 7 #define maxn 20010 8 struct Node{ double x,y; }node[maxn]; 9 int n;10 bool cmp(Node a,Node b){11 if(a.x!=b.x) return a.x<b.x;12 return a.y<b.y;13 }14 int main(){15 scanf("%d",&n);16 for(int i=1;i<=n;i++)17 scanf("%lf%lf",&node[i].x,&node[i].y);18 sort(node+1,node+n+1,cmp);19 // for(int i=1;i<=n;i++)20 // printf("%lf %lf\n",node[i].x,node[i].y);21 double lastx=(node[1].x+node[n].x)/2.0;22 double lasty=(node[1].y+node[n].y)/2.0;23 for(int i=2;i<=n/2;i++){24 double p=(node[i].x+node[n-i+1].x)/2.0;25 double q=(node[i].y+node[n-i+1].y)/2.0;26 if(p==lastx&&q==lasty) continue;27 else {28 printf("This is a dangerous situation!");29 return 0;30 }31 }32 printf("V.I.P. should stay at (%.1lf,",lastx);33 printf("%.1lf).",lasty);34 return 0;35 }
洛穀 P1227 [JSOI2008]完美的對稱