题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2338

中学数学老师告诉我们,一个矩形的两条对角线相等,所以只要把所有的边拿出来,记录下中点坐标及长度,然后排一遍序扫一遍更新答案。。(听说开double会炸?

  1. #include<cstring>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<cmath>
  5. #include<iostream>
  6. #include<queue>
  7. #define rep(i,l,r) for (int i=l;i<=r;i++)
  8. #define down(i,l,r) for (int i=l;i>=r;i--)
  9. #define clr(x,y) memset(x,y,sizeof(x))
  10. #define maxn 1505
  11. #define inf int(1e9)
  12. #define eps 1e-6
  13. using namespace std;
  14. typedef long long ll;
  15. struct data{ll len,x,y;int a,b;
  16. }a[maxn*maxn];
  17. struct node{ll x,y;
  18. };
  19. int n,cnt,next,now;
  20. ll ans,x[maxn],y[maxn];
  21. ll read(){
  22. ll x=,f=; char ch=getchar();
  23. while (!isdigit(ch)) {if (ch=='-') f=-; ch=getchar();}
  24. while (isdigit(ch)) {x=x*+ch-''; ch=getchar();}
  25. return x*f;
  26. }
  27. ll sqr(ll x){
  28. return x*x;
  29. }
  30. ll dis(int a,int b){
  31. return sqr(x[a]-x[b])+sqr(y[a]-y[b]);
  32. }
  33. bool cmp(data a,data b){
  34. if (a.x==b.x&&a.len==b.len) return a.y<b.y;
  35. else if (a.len==b.len) return a.x<b.x;
  36. return a.len<b.len;
  37. }
  38. bool jud(data a,data b){
  39. if (a.x==b.x&&a.y==b.y&&a.len==b.len) return ;
  40. return ;
  41. }
  42. ll cross(node p,node q){
  43. return abs(p.x*q.y-p.y*q.x);
  44. }
  45. void solve(data a,data b){
  46. node p=(node){x[a.a]-x[a.b],y[a.a]-y[a.b]};
  47. node q=(node){x[a.a]-x[b.a],y[a.a]-y[b.a]};
  48. ans=max(ans,cross(p,q));
  49. }
  50. int main(){
  51. scanf("%d",&n);
  52. rep(i,,n){
  53. x[i]=read(); y[i]=read();
  54. }
  55. rep(i,,n) rep(j,i+,n) a[++cnt]=(data){dis(i,j),x[i]+x[j],y[i]+y[j],i,j};
  56. sort(a+,a++cnt,cmp);
  57. now=cnt;
  58. while (now>){
  59. next=now-;
  60. while (jud(a[now],a[next])) {
  61. solve(a[now],a[next]);
  62. next--;
  63. }
  64. now--;
  65. }
  66. printf("%lld\n",ans);
  67. return ;
  68. }

BZOJ2338: [HNOI2011]数矩形的更多相关文章

  1. bzoj2338[HNOI2011]数矩形 计算几何

    2338: [HNOI2011]数矩形 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1535  Solved: 693[Submit][Status ...

  2. 【计算几何】bzoj2338 [HNOI2011]数矩形

    对于两条线段,若其中点重合,且长度相等,那么它们一定是某个矩形的对角线. N*N地处理出所有线段,排序,对每一部分中点重合.长度相等的线段进行暴力枚举,更新答案. 用 long double 注意EP ...

  3. {bzoj2338 [HNOI2011]数矩形 && NBUT 1453 LeBlanc}平面内找最大矩形

    思路: 枚举3个点,计算第4个点并判断是否存在,复杂度为O(N3logN)或O(N3α) 考虑矩形的对角线,两条对角线可以构成一个矩形,它们的长度和中点必须完全一样,于是将所有线段按长度和中点排序,那 ...

  4. 【BZOJ2338】[HNOI2011]数矩形 几何

    [BZOJ2338][HNOI2011]数矩形 题解:比较直观的做法就是枚举对角线,两个对角线能构成矩形当且仅当它们的长度和中点相同,然后用到结论:n个点构成的矩形不超过n^2.5个(不会证),所以两 ...

  5. bzoj-2338 2338: [HNOI2011]数矩形(计算几何)

    题目链接: 2338: [HNOI2011]数矩形 Time Limit: 20 Sec  Memory Limit: 128 MB Description Input   Output 题意: 思路 ...

  6. 【题解】Luogu P3217 [HNOI2011]数矩形

    原题链接:P3217 [HNOI2011]数矩形 什么??!怎么又是计算几何,您钛毒瘤了-- 这道题真的是毒瘤 凸包?旋转卡壳? 看一下数据,N<=1500? 暴力 没错,就是暴力,N^2没毛病 ...

  7. luogu P3217 [HNOI2011]数矩形

    LINK:数矩形 题意:给出n个点 求出一个最大的矩形. 矩形可以使斜着的.(不会告诉你样例我算了几年 这道题的一个潜规则 矩形面积都是整数 我也不知道为啥一定是整数 姑且是题目输出的要求吧. 所以用 ...

  8. 【bzoj2338】[HNOI2011]数矩形 计算几何

    题目描述 题解 计算几何 由于对角线平分且相等的四边形是矩形,因此我们可以把每条对角线存起来,按照对角线长度和中点位置为关键字排序,这样对于每个相同长度和中点的对角线就排到了一起. 于是对于每段可能形 ...

  9. [HNOI2011]数矩形

    题目描述 最近某歌手在研究自己的全球巡回演出计划,他将所有心仪的城市都用平面上的一个点来表示,并打算从中挑选出 4 个城市作为这次巡回演出的地点. 为了显示自己与众不同,他要求存在一个矩形使得挑选出的 ...

随机推荐

  1. iOSXML & JSON 简介

    XML & JSON 简介 •JSON –作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式 –基于JavaScript的一个子集 –易读性略差,编码手写难度大,数据量小 ...

  2. Android Activity生命周期详细解析

    概况 讲Android Activity那怎么都绕不过这张图,这篇文章也是围绕这幅图详细分析. 背景 假设这是你的APP,以此为背景,下面的每个part请结合上图理解. #Case 1 当按下app启 ...

  3. mybatis的那些事

    转载请注明出处:http://www.cnblogs.com/yidaijiankuanzhongbuhui/p/7003993.html 用mybatis一年多了,一直是别人搭好框架,配置好各种配置 ...

  4. Java I/O---输入与输出

    编程语言的I/O类库中常使用流这个抽象概念, 它代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象. "流" 屏蔽了实际的I/O设备中处理数据的细节.Java类库中 ...

  5. php多语言切换---转载

    文件内容: /include/language.php <?php $languages = array (); $languages ['zh-cn'] ["name"]  ...

  6. java-FFmpeg(一) 实现视频的转码和截图功能

    FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件).它提供了录制.转换以及流化音视频的完整解决方案.它包含了非常先进的音频/视频编解码库l ...

  7. 高仿二次元网易GACHA

    高仿二次元网易GACHA,所有接口均通过Charles抓取而来,图片资源通过 https://github.com/yuedong56/Assets.carTool 工具提取. 详情见github地址 ...

  8. crontabs linux定时任务功能安装

    crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行.通常 ...

  9. PHP字符串处理与正则表达式

    字符串 1. PHP中的字符串是一种基本数据类型,PHP对unicode没有本地支持. 2. 字符串可以可以通过花括号来访问每一个字符,并且每个花括号只能存放一个字符:     $str = 'abc ...

  10. 为什么树莓派不会受到 Spectre 和 Meltdown 攻击

    最近爆出来的 Intel CPU 的底层漏洞可谓是影响巨大,过去20年的电脑都可能会受影响.前几天 Raspberry Pi 的官方 Twitter(@Raspberry_Pi) 转推了这篇文章,通过 ...