P1959 遗址_NOI导刊2009普及(6)
题意:平面上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=,f=;
char ch=getchar();
while(!isdigit(ch))
{
if(ch=='-')
f=-f;
ch=getchar();
}
while(isdigit(ch))
{
x=(x<<)+(x<<)+(ch^);
ch=getchar();
}
return x*f;
}
inline void put(int x)
{
if(x<)
{
x=-x;
putchar('-');
}
if(x>)
put(x/);
putchar(x%+'');
}
int n;
struct node
{
int x;
int y;
}E[];
bool vis[][];
int ans;
double eps=1e-;
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)&) return -; //判断是否有奇数个奇数
int cx=(ax+bx+by-ay)>>; //四个点的坐标
int cy=(ay+by+ax-bx)>>;
int dx=(ax+bx-by+ay)>>;
int dy=(ay+by-ax+bx)>>;
if(cx<||cy<||dx<||dy<||cx>||cy>||dx>||dy>||!vis[cx][cy]||!vis[dx][dy]) return -; //没超范围并且点存在
int fx=cx-ax;
int fy=cy-ay;
return fx*fx+fy*fy; //面积
}
int main()
{
n=read();
for(int i=;i<=n;i++)
{
E[i].x=read();
E[i].y=read();
vis[E[i].x][E[i].y]=true;
}
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
if(i==j) continue;
ans=max(ans,ok(i,j));
}
put(ans);
olinr ~~(^_^)+love_nmr;
}
P1959 遗址_NOI导刊2009普及(6)的更多相关文章
- 几何+暴力【p1959】 遗址[NOI导刊2009普及(6)]
题目描述--> P1959 遗址_NOI导刊2009普及(6) 普通方法分析: 因为题目要求是找最大正方形(如果是长方形更麻烦. 讲真,题目不难,耗时间! 根据题目要求,我们要找的是正方形. 我 ...
- 洛谷——P1958 上学路线_NOI导刊2009普及(6)
P1958 上学路线_NOI导刊2009普及(6) 题目描述 你所在城市的街道好像一个棋盘,有a条南北方向的街道和b条东西方向的街道.南北方向的a条街道从西到东依次编号为l到a,而东西方向的b条街道从 ...
- Luogu [P1958] 上学路线_NOI导刊2009普及(6)
上学路线_NOI导刊2009普及(6) 题目详见:上学路线_NOI导刊2009普及(6) 这是一道基础的DFS(深搜)题,堪称模板,是新手练习搜索与回溯的好题选. 大致思路:从(1,1)开始搜索,每次 ...
- 洛谷 P1767 家族_NOI导刊2010普及(10)
题目描述 在一个与世隔绝的岛屿上,有一个有趣的现象:同一个家族的人家总是相邻的(这里的相邻是指东南西北四个方向),不同的家族之间总会有河流或是山丘隔绝,但同一个家族的人不一定有相同姓氏.现在给你岛上的 ...
- 洛谷——P1767 家族_NOI导刊2010普及(10)
P1767 家族_NOI导刊2010普及(10) 题目描述 在一个与世隔绝的岛屿上,有一个有趣的现象:同一个家族的人家总是相邻的(这里的相邻是指东南西北四个方向),不同的家族之间总会有河流或是山丘隔绝 ...
- 洛谷 P1765 手机_NOI导刊2010普及(10)
题目描述 一般的手机的键盘是这样的: 1 2 abc 3 def 4 ghi 5 jkl 6 mno 7 pqrs 8 tuv 9 wxyz * 0 # 要按出英文字母就必须要按数字键多下.例如要按出 ...
- P1765 手机_NOI导刊2010普及(10)
P1765 手机_NOI导刊2010普及(10) 题目描述 一般的手机的键盘是这样的: 1 2 abc 3 def 4 ghi 5 jkl 6 mno 7 pqrs 8 tuv 9 wxyz * 0 ...
- 洛谷 P1952 火星上的加法运算_NOI导刊2009提高(3)
P1952 火星上的加法运算_NOI导刊2009提高(3) 题目描述 最近欢欢看到一本有关火星的书籍,其中她被一个加法运算所困惑,由于她的运算水平有限.她想向你求助,作为一位优秀的程序员,你当然不会拒 ...
- 洛谷—— P1765 手机_NOI导刊2010普及(10)
https://www.luogu.org/problem/show?pid=1765#sub 题目描述 一般的手机的键盘是这样的: 1 2 abc 3 def 4 ghi 5 jkl 6 mno 7 ...
随机推荐
- Unreal Engine 4的常见Tips
转自:http://www.unrealchina.net/portal.php?mod=view&aid=66 退出游戏: UKismetSystemLibrary::QuitGame(th ...
- arm开发板6410/2440上mjpg-streamer网络视频服务器移植
摄像头移植 一.环境 主机环境 :ubuntu 10.10 目标板 :FS-S5PC100 主机工具链 :gcc-4.4.5 交叉工具链 :arm-unknown-li ...
- js查看对象内容
function show_obj(obj){ var temp,p1Str=""; for(temp in obj){ p1Str=p1Str+temp+":" ...
- 一段小程序理解getchar和putchar
#include "stdafx.h" #include <iostream> using namespace std; int main() { char c,d,e ...
- 01-19asp.net网站--关于“应用程序中的服务器错误(需添加"Jquery"ScriptRescourseMapping)”
一般打开网页进行加载时(有缓存),会弹出以下对话框. 但是如果网页加载后出现以下错误,就是应用程序的问题了.如果出现这种问题,就需要在安装Csharp的根目录下,找到一个名为.dll结尾的Jquery ...
- CentOS6.5 释放SWAP
虚拟内存的释放一般都是伴随着关闭应用程式来说的 可以通过命令刷新swap还原到初始状态: swapoff -a swapon -a 例如: [root@wjlcn1026 vm]# f ...
- Ubuntu安装Chrome及hosts修改
Ubuntu16.04 1.chrome安装 获取安装包http://www.google.cn/chrome/browser/desktop/index.html 在安装包目录打开终端执行sudo ...
- Eclipse中,将jar包导入为User Library
项目右键 Properties -> bulid path -> Add Library -> User Library -> User Libraries -> New ...
- PagerSlidingTabStrip(viewPage滑动菜单)
Github地址:https://github.com/astuetz/PagerSlidingTabStrip 1,Include the library dependencies { compil ...
- 磨刀——python及相关工具
1.python语言包 1.1去https://www.python.org/,在download栏下载最新版python2或者python3 tips:1.点击下载会很慢,推荐:迅雷,百度云盘下载, ...