题意:平面上n个点(坐标$0\le x,y\le 5000,n \le 3000$)

   求以其中四个点为顶点的正方形的最大面积

$O(n^2)$枚举两个点作为当前正方形的对角线

那么如何求出另外两个点呢?

设一个点为$(ax,ay)$,另一个为$(bx,by)$

所求点$(cx,cy),(dx,dy)$

考虑正方形中点$(\frac{ax+bx}{2},\frac{ay+by}{2})$

可以求出左边的向量为$(\frac{bx-ax}{2},\frac{by-ay}{2})$

右边的向量等于左边的向量旋转(自己举例推)$(\frac{by-ay}{2},\frac{ax-bx}{2})$

于是,右下角的点的坐标等于中点加右边的向量

   左上角点的坐标等于中点减右边的向量

如果那两个点是小数,是不成立的

怎么判断呢?

可以发现,那两个点的结果是由ax,ay,bx,by通过加加减减之后除以二得到的,

也就是说ax,ay,bx,by通过加加减减得到的应该是偶数

因此ax,ay,bx,by中必须要有偶数个奇数才成立!

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cctype>
#include<algorithm>
using namespace std;
#define olinr return
#define _ 0
#define love_nmr 0
#define DB double
inline int read()
{int x=0,f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();}while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;
}
inline void put(int x)
{if(x<0){x=-x;putchar('-');}if(x>9)put(x/10);putchar(x%10+'0');
}
int n;
struct node
{int x;int y;
}E[3050];
bool vis[5005][5005];
int ans;
double eps=1e-5;
inline int ok(int i,int j)
{int ax=E[i].x;int ay=E[i].y;int bx=E[j].x;int by=E[j].y;if((ax^ay^bx^by)&1) return -1;  //判断是否有奇数个奇数int cx=(ax+bx+by-ay)>>1;     //四个点的坐标int cy=(ay+by+ax-bx)>>1;int dx=(ax+bx-by+ay)>>1;int dy=(ay+by-ax+bx)>>1;if(cx<0||cy<0||dx<0||dy<0||cx>5000||cy>5000||dx>5000||dy>5000||!vis[cx][cy]||!vis[dx][dy]) return -1;  //没超范围并且点存在int fx=cx-ax;int fy=cy-ay;return fx*fx+fy*fy;   //面积
}
int main()
{n=read();for(int i=1;i<=n;i++){E[i].x=read();E[i].y=read();vis[E[i].x][E[i].y]=true;}for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){if(i==j) continue;ans=max(ans,ok(i,j));}put(ans);olinr ~~(0^_^0)+love_nmr;
}

转载于:https://www.cnblogs.com/olinr/p/9588129.html

P1959 遗址_NOI导刊2009普及(6)相关推荐

  1. 洛谷 P1767 家族_NOI导刊2010普及(10)

    P1767 家族_NOI导刊2010普及(10) 题目描述 在一个与世隔绝的岛屿上,有一个有趣的现象:同一个家族的人家总是相邻的(这里的相邻是指东南西北四个方向),不同的家族之间总会有河流或是山丘隔绝 ...

  2. P1950 长方形_NOI导刊2009提高(2)[单调栈][贡献法]

    P1950 长方形_NOI导刊2009提高(2) 题意:给你\(n\times m\)的矩形,求没有*的子矩形数量.\(1\leq n,m\leq 1000\). 数据比较弱的题目是luoguP119 ...

  3. 洛谷——P1951 收费站_NOI导刊2009提高(2)

    https://www.luogu.org/problem/show?pid=1951 题目描述 在某个遥远的国家里,有n个城市.编号为1,2,3,-,n. 这个国家的政府修建了m条双向的公路.每条公 ...

  4. [洛谷P1951]收费站_NOI导刊2009提高(2)

    题目大意:有一张$n$个点$m$条边的图,每个点有一个权值$w_i$,有边权,询问从$S$到$T$的路径中,边权和小于$s$,且$\max\limits_{路径经过k}\{w_i\}$最小,输出这个最 ...

  5. P1801 黑匣子_NOI导刊2010提高(06)

    P1801 黑匣子_NOI导刊2010提高(06) 题目描述 Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个 ...

  6. P1799 数列_NOI导刊2010提高(06)

    P1799 数列_NOI导刊2010提高(06) f[i][j]表示前i个数删去j个数得到的最大价值. if(i-j==x) f[i][j]=max(f[i][j],f[i-1][j]+1); els ...

  7. 方程的解_NOI导刊2010提高(01) 组合数

    题目描述 佳佳碰到了一个难题,请你来帮忙解决. 对于不定方程a1+a2+-+ak-1+ak=g(x),其中k≥2且k∈N,x是正整数,g(x)=x^x mod 1000(即x^x除以1000的余数), ...

  8. 洛谷 P1795 无穷的序列_NOI导刊2010提高(05)

    P1795 无穷的序列_NOI导刊2010提高(05) 题目描述 有一个无穷序列如下: 110100100010000100000- 请你找出这个无穷序列中指定位置上的数字 输入输出格式 输入格式: ...

  9. 洛谷P1807 最长路_NOI导刊2010提高(07) 求有向无环图的 最长路 图论

    洛谷P1807 最长路_NOI导刊2010提高(07) 图论 求有向无环图的 最长路 首先阐明一点 最长路dijkstra 是不能做 (当然我是不会做的,不过我貌似看到过网上的dalao有用dijst ...

最新文章

  1. paip.odbc DSN的存储与读取
  2. 对于广泛依赖外部资源的应用程序,请考虑在多处理器计算机上启用网络园艺
  3. Oracle10g 回收站及彻底删除table : drop table xx purge
  4. 《术以载道——软件过程改进实践指南》—第1章1.1节对CMMI的基本认识
  5. 检测跟踪 DeepSOCIAL:基于YOLOv4的人群距离监测 集检测、跟踪以及逆透视映射一体的系统
  6. php中pre标签,html中pre标签与code标签的作用与用法
  7. mysql dba系统学习(14)mysql用户管理之一、二
  8. MPICH 完整配置存档
  9. mysql时间与字符串相互转换
  10. VScode PowerShell运行脚本报错禁止运行脚本解决方式图文
  11. C语言goto关键字—尽量少用
  12. 6000字说透,如何做好产品「适老化」!
  13. FLASH得到MYSQL数据
  14. 树状数组 / 二维树状数组
  15. IIS中发布网站的问题
  16. c# equals与==的区别(转载)
  17. GetHashCode 方法 并不能保证值唯一
  18. 【技术贴】图文教程 最新QQ空间免费背景音乐添加方法||QQ空间免费添加背景音乐。...
  19. 瘦身长腿、日新小清新治愈系、lomo效果
  20. LaTeX数学公式常用符号

热门文章

  1. LY.JAVA面向对象编程.形式参数和返回值
  2. 四川第七届 C Censor (字符串哈希)
  3. toast, 警告窗
  4. WIN7与WIN10 安装
  5. Jenkins 利用HTML Publisher plugin实现HTML文档报告展示
  6. 11-6渐变的用途和设定技巧
  7. 是时候重构下自己的博客了
  8. [转]Windows Shell编程 第十五章【来源:http://blog.csdn.net/wangqiulin123456/article/details/7988016】...
  9. 周立功的linux开发板例程,USB NXP LPC1766 开发配套例程(周立功开发板自带例程) - 下载 - 搜珍网...
  10. (220)FPGA内部组成LUT介绍