当前位置: 首页 > 编程日记 > 正文

poj2002 hash+数学

1 .求不同的四个点组成最大正方形的总个数;

2.由(x1,y1),(x2,y2),可以求出另外两点的坐标;

即 x3=x1+(y1-y2);y3=y1-(x1-x2);

    x4=x2+(y1-y2);y4=y2-(x1-x2);

或者

  x3=x1-(y1-y2);y3=y1+(x1-x2);

x4=x2-(y1-y2);y4=y2+(x1-x2);

3.由求出的点的坐标可以hash查找是否存在,如果存在就加一;

4.最终答案为8倍的正方形个数;

5.源码;

#include<iostream>
#include<stdio.h>
using namespace std;
const int prime=99991;
struct Node
{
    int x;
    Node *next;
};
Node hash[100000];
int a[20000],b[20000];
int n;
void insert(int key,int i)
{
    if(hash[key].x==0)
    {
        hash[key].x=i;
    }
    else{
        Node *p=&hash[key],*pp;
        while (p!=NULL)
        {
            pp=p;
            p=p->next;
        }
        Node *p1 = new Node;
        p1->x=i;
        p1->next=NULL;
        pp->next=p1;
    }
}
void init()
{
    int i,j;
    for (i=0;i<=99991;i++) {hash[i].x=0;hash[i].next=NULL;}
    for (i=1;i<=n;i++)
    {
        scanf("%d%d",&a[i],&b[i]);
        int key=(a[i]*a[i]+b[i]*b[i])%prime;
        insert(key,i);
    }
}
int ans;
bool find(int key,int x,int y)
{
    Node *p=&hash[key];
    while (p!=NULL)
    {
        if(a[p->x]==x&&b[p->x]==y) return true;
        p=p->next;
    }
    return false;
}
void make()
{
    ans=0;
    int key1,key2,x1,x2,y1,y2;
    int i,j;
    for (i=1;i<=n;i++)
        for (j=1;j<=n;j++)
     if(i!=j)          {
              x1=a[i]+b[i]-b[j];y1=b[i]-(a[i]-a[j]);
              x2=a[j]+b[i]-b[j];y2=b[j]-(a[i]-a[j]);
              key1=(x1*x1+y1*y1)%prime;
              key2=(x2*x2+y2*y2)%prime;
              if(find(key1,x1,y1)&&find(key2,x2,y2)) ans++;//cout<<x1<<"  "<<y1<<endl;cout<<x2<<" "<<y2<<endl;}
              x1=a[i]-(b[i]-b[j]);y1=b[i]+(a[i]-a[j]);
              x2=a[j]-(b[i]-b[j]);y2=b[j]+(a[i]-a[j]);
               key1=(x1*x1+y1*y1)%prime;
              key2=(x2*x2+y2*y2)%prime;
              if(find(key1,x1,y1)&&find(key2,x2,y2)) ans++;
          }
    printf("%d\n",ans/8);
}
int main()
{
    while(scanf("%d",&n))
    {
        if(n==0) break;
        init();
        make();
    }
    return 0;
}

转载于:https://www.cnblogs.com/dlut-li/p/5356303.html

相关文章:

计算机如何表示色彩?

我们都知道&#xff0c;颜色或色彩是通过眼、脑和我们的生活经验所产生的一种对光的视觉效应。 而其中人眼对红、绿、蓝这3种光的敏感度最高。 由于任何光都可以用红、绿、蓝这3种光按不同的比例混合而成&#xff08;三原色原理&#xff09;&#xff0c;我们才能看到色彩斑斓的…

Java基础班学习笔记(13)IO流

知识要点&#xff1a;1:异常(理解)(1)程序出现的不正常的情况。(2)异常的体系Throwable|--Error 严重问题&#xff0c;我们不处理。|--Exception|--RuntimeException 运行期异常&#xff0c;我们需要修正代码|--非RuntimeException 编译期异常&#xff0c;必须处理的&#xff0…

问题一:云服务中那么多的服务器怎么拓扑???

云服务&#xff1a; 1.云存储&#xff08;百度云&#xff09; 2.视频点播 3.平台或者是软件&#xff08;阿里云&#xff09; 数据中心&#xff1a;存储数据的地方&#xff0c;我们通常会在一些电影里看到的大型的服务器整齐的罗列在一个大的房间中&#xff0c;那个也就差不…

2016-2022年AutoCAD起重机吊装计划和索具图纸

AutoCAD Crane Lifting Plan and Rigging Drawings 2016-2022 完成AutoCAD 2D高级起重机提升计划和索具图纸-基于项目的培训 你会学到什么 学习所有基本和高级的AutoCAD 2D工具栏 学习高级块和动态块 准备AutoCAD面试和考试 创建图纸、物料清单和布局的使用 学习图纸集管理器和…

tensorflow 转张量类型为float_TensorFlow快速入门

TensorFlow是一个数值计算库&#xff0c;其中数据&#xff08;Tensor&#xff0c;张量&#xff09;在计算图中流动。数据在TensorFlow用被称为张量的n维数据表示。计算图由数据和数学操作符构成。计算图中的节点代表数学操作符计算图中的边代表操作符之间的张量计算图(Graph)在…

环境变量配置文件

环境变量配置文件 关于显示"bash5.2#"问题 由于是PS1没有设置成功&#xff0c;说明~/.bash_profile --> ~/.bashrc --> /etc/.bashrc的文件加载流程出错。 posted on 2016-04-06 12:50 大侠去哪儿 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.…

【译】CSS动画 vs JS动画

原文地址 目前有两个主流的方法在web上创建动画&#xff1a;使用CSS或JS。到底选择哪种方法来实现动画&#xff0c;完全取决于你的项目以及你想要达到的效果。 tips: 对于简单的只出现一次的过渡效果&#xff0c;可以采用CSS动画&#xff0c;比如切换UI元素的状态在需要高级的效…

问题二:相关性怎么引入?

在大数据处理的时候总是会有说&#xff0c;现今科学技术的发展使得我们使用样本取代总体的时代过去了。在新的时代我们使用的是足够多的接近于总体的大的数据。在这个大的数据里面&#xff0c;我们没有办法具体数据具体的分析。因为它足够的大。 因此引入了相关性的概念&#x…

【UE5】虚幻引擎5中的VFX游戏特效制作学习教程

从零开始学习虚幻引擎5中的实时VFX。 你会学到什么 了解如何创建实时效果 通过创造效果来学习Niagara 了解Niagara是如何运作的 为游戏创造各种各样的效果。 创造风格化的火 创建风格化的爆炸 创造能量球 MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz 语…

HDOJ 1236 排名(练耐心题)

Problem Description 今天的上机考试虽然有实时的Ranklist&#xff0c;但上面的排名只是根据完成的题数排序&#xff0c;没有考虑 每题的分值&#xff0c;所以并不是最后的排名。给定录取分数线&#xff0c;请你写程序找出最后通过分数线的 考生&#xff0c;并将他们的成绩按…

python跟java 效率_对比平台--Java与Python之间的性能差异

ava Performance和Python之间的主要区别 以下是描述Java Performance和Python之间的区别的要点列表&#xff1a; 以下是Java性能与Python之间的主要区别&#xff0c;我们在决定应该选择哪种语言之前必须进行分析和评估。 Java是一种编译语言&#xff0c;而Python是一种解释语言…

你听说过反摩尔定律吗?

相信很多人听说过摩尔定律&#xff0c;但是你听说过反摩尔定律吗&#xff1f; 可能你会以为反摩尔定律就是与摩尔定律相反的定律&#xff0c;甚至认为这两个定律相互矛盾&#xff0c;那你就大错特错了&#xff0c;其实两种定律可以说是针对同一种现象的不同说法。 摩尔定律是…

《Java从入门到精通》第九章学习笔记

第9章 类的高级特性 一、抽象类 抽象类只声明方法的存在&#xff0c;不能被实例化&#xff0c;就是说抽象类不能创建其对象&#xff0c;在定义抽象类时要在class前面加上abstract关键字。 1 /*定义一个抽象类Fruit&#xff0c;并定义其抽象方法2 *在其子类中实现该抽象方法3 …

Python中的super()函数

多路继承的问题 描述&#xff1a; 解决这样的问题Python中可以使用super&#xff08;&#xff09; super&#xff08;&#xff09;函数有点&#xff1a; &#xff08;1&#xff09;在父类中可以直接的调用未绑定的方法 &#xff08;2&#xff09;在确保所有的父类的构造方…

【UE5教程】影棚拍摄于虚拟场景合成制作流程学习

用虚幻引擎预算虚拟生产5 你会学到什么 使用虚幻引擎5进行虚拟生产 使用虚幻引擎5的独立虚拟制作 用虚幻引擎预算虚拟生产5 用虚幻引擎5进行穷人虚拟生产 用虚幻引擎5进行自制虚拟制作 虚幻引擎5独立虚拟制作 带虚幻引擎5的复合绿屏 虚拟生产导论 面向初学者的虚拟生产 MP4 |视…

java面试题:分布式和微服务的区别

分布式架构解决的是如何将一个大的系统划分为多个业务模块这些业务模块会分别部署到不同的机器上,通过接口进行数据交互的问题。微服务是指很小的服务,可以小到只完成一个功能,这个服务可以单独部署运行,不同服务之间通过rpc调用。分布式架构是将一个大的系统划分为多个业务模块,这些业务模块会分别部署到不同的机器上,通过接口进行数据交互。微服务架构是架构设计方式,是设计层面的东西,一般考虑如何将系统从逻辑上进行拆分,也就是垂直拆分。分布式系统是部署层面的东西,即强调物理层面的组成,即系统的各子系统部署在不同计算机上。

python安装成功的图标_ubuntu下:安装anaconda、环境配置、软件图标的创建、成功启动anaconda图形界面...

Ubuntu安装anaconda常见的四大问题&#xff1a;目录1、介绍2、安装anaconda3、环境配置4、软件图标的创建5、成功启动anaconda图形界面1、介绍先介绍一下anaconda和python的关系&#xff1a;初学者所安装的python2/3只是python的环境&#xff0c;没有python的工具包&a…

jQuery和dom的相互转换

1.将DOM对象转换成jQuery对象 $div $(objDom); 2.将jQuery对象转换成DOM对象 objDom $(objJqeury).get(0); 3.判断一个元素是否存在于页面 jQuery方法&#xff1a; $("#id").length >0:代表存在于页面 0&#xff1a;不存在页面 4.取另一个页面中存在的元素 …

VScode的撤销操作的快捷键

撤销刚才的操作&#xff1a;CtrlZ 恢复刚才的操作&#xff1a;CtrlShiftZ

IOS初级:UIAlertController

- (IBAction)signOutAction:(id)sender {//初始化,StyleActionSheet是对话框的样式UIAlertController *alert [UIAlertController alertControllerWithTitle:"是否注销?" message:"真的要注销吗" preferredStyle:UIAlertControllerStyleActionSheet];//添…

1976年图灵奖

获奖原因&#xff1a; 在1959年发表的论文“有限自动机及其判定问题”中提出了非确定性有限状态自动机这一概念。 图灵奖引用&#xff1a; 授 予 MichaelO. Rabin与DanaSteward Scott图灵奖以表彰合作撰写的研究论文“有限自动机与其判定性问题”。在该研究论文中&#xff0c;…

UE4蓝图无代码编程游戏开发技能学习教程

在虚幻引擎4中创建、设计和开发自己的游戏&#xff0c;无需编码 你会学到什么 虚幻引擎4中使用蓝图的游戏开发(无代码编程) 使用行业标准方法的游戏设计 使用Maya进行三维设计 在本课程中创建您的第一个游戏 Game Development Essentials with Unreal Engine 4 Blueprints M…

“睡眠猴子”团队项目及成员介绍

“睡眠猴子”团队项目及成员介绍 咳咳……软件工程这门课最终还是来到了团队开发的部分&#xff0c;我们宿舍三只经过一下午的讨论和需求分析决定做一款名叫“睡眠猴子”的安卓版手机软件&#xff0c;具体的项目功能和团队介绍如下&#xff1a; 一、“睡眠猴子”开发团队介绍&a…

python代码编写规范_python初学者-代码规范

一、编程规范 1.缩进&#xff08;代码块&#xff09; 类定义、函数定义、选择结构、循环结构、with块、行尾的冒号表示缩进的开始。 python程序是依靠代码块的缩进来体现代码之间的逻辑关系&#xff0c;缩进结束就表示一个代码块结束。 同一个级别的代码块的缩进量必须相同。 一…

程序出现 ld returned 1 exit status的解决办法之一

把正在运行的窗口关闭

基于自然的灵感算法--元启发式

问题一&#xff1a;自然赋予的元启发式优化算法的分类 自然赋予的元启发式算法&#xff08;模拟生物或者物理的现象去解决问题&#xff09;有三大类也就是&#xff1a;基于进化&#xff0c;基于物理的&#xff0c;基于群体的 基于进化的主要是受达尔文的物种进化理论的启发&a…

三维地形制作软件 World Machine 基础入门学习教程

《World Machine课程》涵盖了你需要的一切&#xff0c;让你有一个坚实的基础来构建自己的高质量的电影或视频游戏地形。 你会学到什么 为渲染或游戏开发创建高分辨率、高细节的地形。 基于World Machine蒙版和着色设备的纹理地形。 获得哪个节点达到预期结果的信心。 组装宏以…

python编写脚本方法_【Python】教你一步步编写banner获取脚本

Hello 各位小伙伴们大家好&#xff0c;周末过的愉快吗&#xff1f; 刚好最近学习了使用python编写banner获取脚本&#xff0c;今天就跟大家一起一步一步再学习一遍吧。 Part.1 说明篇 什么是banner&#xff1f; banner可以理解为我们连上服务器后&#xff0c;服务器响应的第一条…

Linux内核分析——可执行程序的装载

链接的过程 首先运行C预处理器cpp&#xff0c;将C的源程序(a.c)翻译成ASCII码的中间文件(a.i)接着C编译器ccl&#xff0c;将a.i翻译成ASCII汇编语言文件a.s接着运行汇编器as&#xff0c;将a.s翻译成可重定位的目标文件a.o最终完全链接成可执行文件a.out目标文件 目标文件有三种…

c语言中external,static关键字用法

static用法&#xff1a; 在C中&#xff0c;static主要定义全局静态变量、定义局部静态变量、定义静态函数。 1、定义全局静态变量&#xff1a;在全局变量前面加上关键字static&#xff0c;该全局变量变成了全局静态变量。全局静态变量有以下特点。 a.在全局区分配内存。 b.如…