1. 程式人生 > >洛谷P1227[JSOI2008]完美的對稱

洛谷P1227[JSOI2008]完美的對稱

對稱 參加 etc 逆轉 reg stay 的人 調整 copy

洛谷P1227[JSOI2008]完美的對稱

題目描述

在峰會期間,必須使用許多保鏢保衛參加會議的各國代表。代表們除了由他自己的隨身保鏢保護外,組委會還指派了一些其他的特工和阻擊手保護他們。為了使他們的工作卓有成效,使被保衛的人的安全盡可能得到保障,保鏢被分配到被保護人的各個方向。

保鏢的最佳站立位置應該是這樣的:被保護人應站在所有保鏢的對稱中心。但是,只要被保

護人一移動,保鏢就很難根據要人的新位置調整位置。大多數的特工都很難對此作出實時調整。

因此,安全部長決定將該過程逆轉一下,保鏢先站好自己的位置,然後要人在他們的對稱中心找到合適的位置。如果要人隨便走動,我們就對他的安全不必負責。

你的工作是使這個過程自動操作。給出一組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: 復制
8
1 10
3 6
6 8
6 2
3 -4
1 0
-2 -2
-2 4
輸出樣例#1: 復制
V.I.P. should stay at (2.0,3.0).

說明

[JSOI2008]第二輪

代碼

隨便畫畫應該都能找到特點吧。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=20000+5;
inline int read()
{
    int x=0,f=1;char ch=getchar();
    while(ch<0||ch>9) {if(ch==-) f=-1; ch=getchar();}
    while(ch>=0&&ch<=9){x=x*10+ch-0;ch=getchar();}
    return x*f;
}
int n;
struct node
{
    int x,y;
    bool operator < (const node& j) const {
    return x==j.x? y<j.y : x<j.x;
    }    
}a[maxn];
int main()
{
    n=read();
    for(int i=1;i<=n;i++)
    {
        a[i].x=read();a[i].y=read();
    }
    sort(a+1,a+n+1);
    double xx,yy;
        xx=((double)(a[1].x+a[n].x))/2.0;
        yy=((double)(a[1].y+a[n].y))/2.0;
    for(int i=2;i<=(n/2);i++)
    {
        double x,y;
        x=(a[i].x+a[n-i+1].x)/2.0;
        y=(a[i].y+a[n-i+1].y)/2.0;
        if(x!=xx||y!=yy)
        {    printf("This is a dangerous situation!"); return 0;}
    }
    printf("V.I.P. should stay at (%.1lf,%.1lf).",xx,yy);
    return 0;
}

洛谷P1227[JSOI2008]完美的對稱