[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!",注意输出时除了两个单词之间用一个空格隔开外,不要输出多余空格。
输入输出样例
8
1 10
3 6
6 8
6 2
3 -4
1 0
-2 -2
-2 4
V.I.P. should stay at (2.0,3.0).
按照点的坐标从小到大排序,然后找出每一个点对的中点,判断即可。
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std; struct point {
int x,y;
} a[]; int n;
double xx,yy;
bool f=; bool cmp(const point m,const point n) {
return (m.x<n.x || (m.x==n.x && m.y<n.y));
} int main() {
scanf("%d",&n);
for (int i=; i<=n; i++) scanf("%d%d",&a[i].x,&a[i].y);
sort(a+,a+n+,cmp);
xx=(double)(a[].x+a[n].x)/;
yy=(double)(a[].y+a[n].y)/;
for (int i=; i<=n-; i++) {
double x2=(double)(a[i].x+a[n+-i].x)/;
double y2=(double)(a[i].y+a[n+-i].y)/;
if (x2!=xx || y2!=yy) {f= ; break;}
}
if (f) printf("V.I.P. should stay at (%.1lf,%.1lf).",xx,yy);
else printf("This is a dangerous situation!");
return ;
}
[JSOI2008] 完美的对称的更多相关文章
- 洛谷——P1227 [JSOI2008]完美的对称
P1227 [JSOI2008]完美的对称 题目描述 在峰会期间,必须使用许多保镖保卫参加会议的各国代表.代表们除了由他自己的随身保镖保护外,组委会还指派了一些其他的特工和阻击手保护他们.为了使他们的 ...
- [JSOI2008]完美的对称 题解
题目大意: 首先我们给定一点A以及对称中心S,点A'是点A以S为对称中心形成的像点,即点S是线段AA'的对称中心. 点阵组(X)以S为中心的像点是由每个点的像点组成的点阵组.X是用来产生对称中心S的, ...
- 洛谷 P1227 [JSOI2008]完美的对称
传送门 题目大意:求一些点集的公共对称中心 题解:对称中心是可以确定的,再判断. 代码: #include<iostream> #include<cstdio> #includ ...
- [luoguP1227] [JSOI2008]完美的对称(sort)
传送门 排序! #include <cstdio> #include <iostream> #include <algorithm> #define N 20001 ...
- P1227 【[JSOI2008]完美的对称】
这道题,先讲一下我的做题思路 这道题的最主要的目的就是算出中心,我下面称为中点.这个中点其实很好算的,我们只需要算出最左下角的坐标和最右上角的坐标,然后用中点坐标公式算出来就ok了,那么这道题就做完了 ...
- 【省选水题集Day1】一起来AK水题吧! 题目(更新到B)
题解:http://www.cnblogs.com/ljc20020730/p/6937954.html 水题A: [AHOI2001]质数和分解 题目网址: https://www.luogu.or ...
- 【省选水题集Day1】一起来AK水题吧! 题解(更新到B)
题目:http://www.cnblogs.com/ljc20020730/p/6937936.html 水题A:[AHOI2001]质数和分解 安徽省选OI原题!简单Dp. 一看就是完全背包求方案数 ...
- Redis Sentinel中的机制与原理详解
序言 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案.实际上这意味着你可以使用Sentinel模式创建一个可以不用人为干预而应对各种故障的Redis部署. 它的主要功能有以 ...
- Redis Sentinel实现的机制与原理详解
序言 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案.实际上这意味着你可以使用Sentinel模式创建一个可以不用人为干预而应对各种故障的Redis部署. 它的主要功能有以 ...
随机推荐
- Android 移动缩放的ImageView
今天介绍一下Android中怎么实现ImageView的缩放和移动,自定义TouchImageView. public class TouchImageView extends ImageView { ...
- idea快捷键(转)
Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/*...*/ )Ctrl+D 复制行Ctrl+X 删除行快速修复 alt+enter (modify/cast)代码提示 alt+/ctr ...
- msf生成shellcode
msfpayload windows/exec CMD = calc.exe EXITFUNC=thread C 在kali Linux2.0新版中msfpayload命令已删除,功能已集成到msfv ...
- hdu 2042
Ps:...好简单的一道题...直接AC,就是利用递归 代码: #include "stdio.h"int find(int num,int n);int main(){ int ...
- HDOJ-三部曲一(搜索、数学)-1012-Shredding Company
Shredding Company Time Limit : 2000/1000ms (Java/Other) Memory Limit : 20000/10000K (Java/Other) T ...
- iptables配置服务器端口转发
环境: CentOS6.5,192.168.1.10,外网双向通信,绑定域名zlzkj.org: WinServer2008,192.168.1.11,外网不能直接访问到该机器,但ftp.远程桌面.M ...
- GIT之二 基础篇(2)
远程仓库的使用 要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库.远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写.同他人协作开发某个项目时,需要管 ...
- H - 放苹果
Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit Status Des ...
- C# 添加图片资源
/********************************************************************** * C# 添加图片资源 * 说明: * 个人觉得图片资源 ...
- Ubuntu下安装lamp
在Ubuntu里安装PHP环境时可以用恨简单的方法,直接用tasksel命令安装. 首先要安装这个命令: sudo apt-get install tasksel 然后,sudo tasksel in ...