给出平面上n个点,问你能不能找到一个竖线让他们对称

这道题后面发现真的不难,又不止一种方法

我当时写的很挫,死脑筋的就找一个点的对称点存不存在,用结构体存点信息,在排序用find找,,然后不知道一堆wa

后面发现排序之后,如果位置i和n-i-1这两个点不对称就一定不存在!!!!

可以用反证法得知

//
// Created by Zeroxf on 2015-08-19-15.36
// Copyright: (c) 2015 Zeroxf. All rights reserved
//
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<queue>
#include<cstdlib>
#include<algorithm>
#include<stack>
#include<map>
#include<queue>
#include<vector>
using namespace std;
struct node{
int x,y;
node(int x,int y):x(x),y(y){}
bool operator < (const node& rhs)const{
return x < rhs.x||(x==rhs.x&&y<rhs.y);
}
bool operator != (const node& rhs)const{
return x != rhs.x || y != rhs.y;
}
};
vector<node> v;
const int maxn = 1e5;
long long t,n,sum,ok,mid;
int x,y;
int main(){
cin>>t;
while(t--){
cin>>n;
sum = 0; ok =true;v.clear();
for(int i = 0; i < n; i++){
scanf("%d%d",&x,&y);
sum += x;
v.push_back(node(x,y));
}
if((sum*2)%n != 0) ok = false;
else {
sort(v.begin(),v.end());
mid = sum *2 /n;
for(int i = 0;i < v.size(); i++){
node findv(mid-v[i].x,v[i].y);
int pos = lower_bound(v.begin(), v.end(), findv) - v.begin();
if(pos>=v.size()||v[pos]!=findv){
ok = false;break;
}
}
}
if(ok) cout<<"YES\n";
else cout<<"NO\n";
}
return 0;
}

UVA1595_Symmetry的更多相关文章

随机推荐

  1. 重温《javascript高级程序设计》(第3版)

    1.重温<JavaScript高级程序设计>(第3版) (一)重温<javascript高级程序设计>(第1-4章) (二)重温<JavaScript高级程序设计> ...

  2. T1218:取石子游戏

    [题目描述] 有两堆石子,两个人轮流去取.每次取的时候,只能从较多的那堆石子里取,并且取的数目必须是较少的那堆石子数目的整数倍,最后谁能够把一堆石子取空谁就算赢. 比如初始的时候两堆石子的数目是25和 ...

  3. QTP——改变Excel的单元格颜色

    Public Function QTP_Change_Color(pathway,sheetname,x,y,color)        Dim srcData,srcDoc,sp1,sp2,num, ...

  4. 【算法】快速数论变换(NTT)初探

    [简介] 快速傅里叶变换(FFT)运用了单位复根的性质减少了运算,但是每个复数系数的实部和虚部是一个余弦和正弦函数,因此系数都是浮点数,而浮点数的运算速度较慢且可能产生误差等精度问题,因此提出了以数论 ...

  5. 高精度求A*B(FFT)

    A * B Problem Plus 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1402 Time Limit: 2000/1000 MS (Java/ ...

  6. SpringBoot-技术专区-异步编程

    最近在实现一个聚合搜索的需求时,由于需要从五个索引中查询数据,然后再将搜索结果组合返回给前端app展现,显然这个地方不能再用同步的方式来操作了,如果有一个索引查询出现耗时较长,那么其余的请求都会排同步 ...

  7. Springboot1.5.9整合WebSocket

    一.WebSocket介绍 1.WebSocket是什么? WebSocket是协议,是HTML5开始提供的基于TCP(传输层)的一种新的网络协议, 它实现了浏览器与服务器全双工(full-duple ...

  8. WPF多线程更新UI的一个解决途径

    那么该如何解决这一问题呢?通常的做法是把耗时的函数放在线程池执行,然后切回主线程更新UI显示.前面的updateTime函数改写如下: private async void updateTime()  ...

  9. Sql 将A表数据插入到B表

    A表和B表字段不同 --insert into B(Name,PersonalId,Education,IsDel) select Name, PersonId as PersonalId, ( ca ...

  10. InnoDB不支持contains等

    并非所有引擎都支持全文本搜索MySQL.与所有其他的DBMS一样,MySQL具有一个具体管理和处理数据的内部引擎.在你使用CREATE TABLE语句时,该引擎具体创建表,而在你使用SELECT语句或 ...