• [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).

     

    按照点的坐标从小到大排序,然后找出每一个点对的中点,判断即可。

     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 }
  • 相关阅读:
    算法----(1)冒泡排序
    淘宝爬虫
    爬虫_豆瓣电影top250 (正则表达式)
    爬虫_猫眼电影top100(正则表达式)
    Android 简单调用摄像头
    Android 简单天气预报
    思维模型
    This view is not constrained, it only has designtime positions, so it will jump to (0,0) unless you
    Android studio preview界面无法预览,报错render problem
    Android studio 3.1.2报错,no target device found
  • 原文地址:https://www.cnblogs.com/zoewilly/p/5992367.html
Copyright © 2020-2023  润新知