UVa1595,Symmetry

这题居然是1A过的.....最近无比失落的心情顿时愉悦起来~

将数据全部读入

先用二维数据来存储坐标(先把题做出来再说= =)

题目中的x,y的坐标范围是-1W到1W....在数组下标里是不能用负数保存的(当然你偏用map当额没说= =),其实可以把x坐标左移1W个单位,这样最小坐标就从0开始了

然后随便找一行y(当然保证该行至少存在一点),那么可以确定这条竖线mid

枚举每一行,以mid为中点向两边扩展,每找到一对x1,x2,判断equal(mid-x1,x2-mid),若否,直接退出循环,输出NO。

2W*2W的数据啊,又大又慢,下面剪枝

1.其实y坐标是没用的,在枚举的时候大量的运算是无意义的,所有将y编号,读数据的时候,对应每一个新y,y=++ID;

2.对于x用vertor存储即可,v[ID].push_back(x);

0.062s过的,我以为还会超时呢,看样子数据大,但是数据量小啊。

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <vector>
#include <algorithm>
#include <cmath>
#define maxn 20000+10
#define c 10000
using namespace std;
vector<int> v[maxn];
int N,a[maxn],cnt[maxn];
double mid;
int equal(double a,double b)
{
    return fabs(a-b)>1e-6?0:1;
}
int main()
{
    int T,top=0;
    cin>>T;
    while (T-->0)
    {
        cin>>N;
        top=0;
        memset(a,0,sizeof(a));
        memset(cnt,0,sizeof(cnt));
        int x,y;
        while(N-->0){
            cin>>x>>y;
            x+=c;
            y+=c;
            if (!a[y]) a[y]=++top;
            v[a[y]].push_back(x);
            cnt[a[y]]++;
        }
        for (int i=1;i<=top;i++)
            sort(v[i].begin(),v[i].end());
        mid=(v[1][cnt[1]-1]+v[1][0])/2.0;
        int k,p,q,ok=1;
        for (k=1;k<=top;k++)
        {
            p=0;
            q=cnt[k]-1;
            while (p<=q&&ok)
                if (!equal(mid-v[k][p++],v[k][q--]-mid)) ok=0;
            if (!ok) break;
        }
        if (ok) cout<<"YES"<<endl;else cout<<"NO"<<endl;
        for (int i=1;i<=top;i++)
            v[i].clear();
    }
}

UVa1595,Symmetry

时间: 2024-10-17 21:47:12

UVa1595,Symmetry的相关文章

千年不曾看懂《道德经》,直至有了《道德图》!--作者:南山空同

第一章:知道识易 本义: 道,可道,非常道.名,可名,非恒名.无名,天地之始:有名,万物之母. 故常无欲,以观其妙:常有欲,以观其徼.此两者同出而异名,同谓之玄,玄之又玄,众妙之门. 通述: 世间的一切规律,都是能够被掌握的,但这些规律,却是不断的发生变化的.我们可以通过一些表面现象,来认知这些规律,我们为了方便识别事物,会给他们命名,来加以区分,但这些名词所包括的内容,也并非一成不变的. 世间事物,本来是不需要通过命名来加以区分的,当我们给一些事物命名,是我们开始认识世间万物的起始.如果我们心

【Javascript 拾遗之三】 Closure 闭包

说起闭包这个概念,其实是离散数学中的一种定义,而很程序员们耳熟能详但不一定能说清楚它的含义和用途.本文先简单地介绍下离散数学中的闭包,然后再探讨一下Javascript语言中的闭包是如何创建和应用的. Closure 闭包 1.闭包的定义 -离散数学 一个关系不具有自反, 对称, 传递这3种基本性质之一,但均可以通过对该关系的扩充(在关系中增添序偶),使扩充后的关系具有这种性质,这种包含该关系的最小扩充称为该关系关于这种性质的闭包. 下面给出闭包的定义:设R是X上的关系,R的自反(或对称,传递)

《泛型编程与stl》笔记

以下是STL六大组件(componments): adapters  配接器 用来修饰其他组件.包括iterator adapters.function adapters.container adapters三大类. allocators 配置器 用来分配空间.空间可来自于内存或磁盘--取决于配置器如何 实现.主要用来服务容器. algorithms 算法 如sort,bineary search,permutation.... containers 容器 就是数据结构,用来存放元素.如vect

楞严经白话——14.10.10

楞严经 大佛顶如来密因修证了义诸菩萨万行首 楞严经卷一 唐朝中天竺国(印度)沙门(出家人)般剌密谛 主译 乌苌国(北印度)沙门(出家人)弥伽释迦 译语 菩萨戒弟子 前正议大夫 同中书门下 平章事 清河县人 房融 执笔记录 (楞严经,原藏于龙宫,胜龙菩萨到龙宫说法,见龙藏中有此经,披阅之下,叹为希有,遂默诵而出,录呈印度国王,国王视其为国宝,严禁外流.般剌密 谛尊者,弘法愿深,两次冒险,思送中国以求宏扬,不幸皆为关卡查禁.尊者乃费数年时间,以蝇头小字书于腊纸之上,剖膊藏于肉中,方得过关航海而来,于

Java基础知识精华部分(个人总结)

写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java语言代码把思路体现出来. 学习新技术的四点: 1,该技术是什么? 2,该技术有什么特点(使用注意): 3,该技术怎么使用.demo 4,该技术什么时候用?test. ------------------------------------------------------------------------------------

ABAP/4 技术总结 V3.0

SAP --ABAP/4 技术总结 V3.0 2014-10-14 --江正军 1.      基础... 1 1.1. 基本数据类型... 1 1.1.1.        P类型(压缩型)数据... 1 1.2.           TYPE.LIKE. 2 1.3.           DESCRIBE. 3 1.4.           字符串表达式... 3 1.5.           Data element.Domain. 4 1.6.           词典预定义类型与ABAP

Fast Radial Symmetry Transform/快速径向对称变换

本文主要介绍一下利用径向变换进行特征提取的方法和原理,基本原理主要来自Gareth Loy and Alexander Zelinsky的A Fast Radial Symmetry Transform for Detecting Points of Interest一文.需要原文的可以留下邮箱. Radial Symmetry Transform(径向对称变换)在某种程度上类似于霍夫圆变换,二者的主要区别在于:前者主要考察一副图像中的每个像素点对它周围邻域内的像素点的作用(贡献),而后者则主要

舍不得孩子套不着狼,英语不狠事业不稳

第一部分  通过词缀认识单词 (常用前缀一) 1.a- ①加在单词(形容词)或词根前面,表示"不,无,非" acentric [?'sentrik] a  无中心的(a+centric中心的) asocial [ei's?u??l] a 不好社交的(a+social好社交的) amoral [?'m?r?l] a  非道德性的(a+moral道德的:注意:immoral不道德的) apolitical. [,eip?'litik?l]  a 不关政治的(a+political政治的)

bzoj2592: [Usaco2012 Feb]Symmetry

Description After taking a modern art class, Farmer John has become interested in finding geometric patterns in everything around his farm. He carefully plots the locations of his N cows (2 <= N <= 1000), each one occupying a distinct point in the 2