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=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)相关推荐
- 洛谷 P1767 家族_NOI导刊2010普及(10)
P1767 家族_NOI导刊2010普及(10) 题目描述 在一个与世隔绝的岛屿上,有一个有趣的现象:同一个家族的人家总是相邻的(这里的相邻是指东南西北四个方向),不同的家族之间总会有河流或是山丘隔绝 ...
- P1950 长方形_NOI导刊2009提高(2)[单调栈][贡献法]
P1950 长方形_NOI导刊2009提高(2) 题意:给你\(n\times m\)的矩形,求没有*的子矩形数量.\(1\leq n,m\leq 1000\). 数据比较弱的题目是luoguP119 ...
- 洛谷——P1951 收费站_NOI导刊2009提高(2)
https://www.luogu.org/problem/show?pid=1951 题目描述 在某个遥远的国家里,有n个城市.编号为1,2,3,-,n. 这个国家的政府修建了m条双向的公路.每条公 ...
- [洛谷P1951]收费站_NOI导刊2009提高(2)
题目大意:有一张$n$个点$m$条边的图,每个点有一个权值$w_i$,有边权,询问从$S$到$T$的路径中,边权和小于$s$,且$\max\limits_{路径经过k}\{w_i\}$最小,输出这个最 ...
- P1801 黑匣子_NOI导刊2010提高(06)
P1801 黑匣子_NOI导刊2010提高(06) 题目描述 Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个 ...
- 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 ...
- 方程的解_NOI导刊2010提高(01) 组合数
题目描述 佳佳碰到了一个难题,请你来帮忙解决. 对于不定方程a1+a2+-+ak-1+ak=g(x),其中k≥2且k∈N,x是正整数,g(x)=x^x mod 1000(即x^x除以1000的余数), ...
- 洛谷 P1795 无穷的序列_NOI导刊2010提高(05)
P1795 无穷的序列_NOI导刊2010提高(05) 题目描述 有一个无穷序列如下: 110100100010000100000- 请你找出这个无穷序列中指定位置上的数字 输入输出格式 输入格式: ...
- 洛谷P1807 最长路_NOI导刊2010提高(07) 求有向无环图的 最长路 图论
洛谷P1807 最长路_NOI导刊2010提高(07) 图论 求有向无环图的 最长路 首先阐明一点 最长路dijkstra 是不能做 (当然我是不会做的,不过我貌似看到过网上的dalao有用dijst ...
最新文章
- paip.odbc DSN的存储与读取
- 对于广泛依赖外部资源的应用程序,请考虑在多处理器计算机上启用网络园艺
- Oracle10g 回收站及彻底删除table : drop table xx purge
- 《术以载道——软件过程改进实践指南》—第1章1.1节对CMMI的基本认识
- 检测跟踪 DeepSOCIAL:基于YOLOv4的人群距离监测 集检测、跟踪以及逆透视映射一体的系统
- php中pre标签,html中pre标签与code标签的作用与用法
- mysql dba系统学习(14)mysql用户管理之一、二
- MPICH 完整配置存档
- mysql时间与字符串相互转换
- VScode PowerShell运行脚本报错禁止运行脚本解决方式图文
- C语言goto关键字—尽量少用
- 6000字说透,如何做好产品「适老化」!
- FLASH得到MYSQL数据
- 树状数组 / 二维树状数组
- IIS中发布网站的问题
- c# equals与==的区别(转载)
- GetHashCode 方法 并不能保证值唯一
- 【技术贴】图文教程 最新QQ空间免费背景音乐添加方法||QQ空间免费添加背景音乐。...
- 瘦身长腿、日新小清新治愈系、lomo效果
- LaTeX数学公式常用符号
热门文章
- LY.JAVA面向对象编程.形式参数和返回值
- 四川第七届 C Censor (字符串哈希)
- toast, 警告窗
- WIN7与WIN10 安装
- Jenkins 利用HTML Publisher plugin实现HTML文档报告展示
- 11-6渐变的用途和设定技巧
- 是时候重构下自己的博客了
- [转]Windows Shell编程 第十五章【来源:http://blog.csdn.net/wangqiulin123456/article/details/7988016】...
- 周立功的linux开发板例程,USB NXP LPC1766 开发配套例程(周立功开发板自带例程) - 下载 - 搜珍网...
- (220)FPGA内部组成LUT介绍