题目大意:给你n个点,求这n个点最多能组成多少个平行四边形。

题目思路:这道题卡时间,而且卡内存。你要尽可能的想办法优化。

平行四边形的判定定理:

  1. 两组对边分别平行的四边形是平行四边形(定义判定法);
  2. 一组对边平行且相等的四边形是平行四边形;
  3. 两组对边分别相等的四边形是平行四边形;
  4. 两组对角分别相等的四边形是平行四边形(两组对边平行判定);
  5. 对角线互相平分的四边形是平行四边形。

这道题用定理5判断。

记录每条边的中点坐标,如果两个边的中点坐标相同,证明这两条边为一个平行四边形的两条对角线。

#include<cstdio>
#include<stdio.h>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#define INF 0x3f3f3f
#define MAX 1000005using namespace std;struct node
{double midx,midy;int x,y;
}Map[MAX];int cmp(node A,node B)
{if(A.midx != B.midx)return A.midx > B.midx;return A.midy > B.midy;
}
int main()
{int T,n,i,j,num=1,k;long long sum,cnt,q;scanf("%d",&T);while(T--){sum=0;cnt=0;scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d%d",&Map[i].x,&Map[i].y);}for(i=1;i<=n;i++){for(j=i+1;j<=n;j++){Map[cnt].midx=(Map[i].x+Map[j].x)/2.0;Map[cnt++].midy=(Map[i].y+Map[j].y)/2.0;}}sort(Map,Map+cnt,cmp);//为了后面的操作更省时,先排序
i=0;k=0;q=1;while(i < cnt){if(Map[i].midx==Map[k].midx && Map[i].midy==Map[k].midy && k!=i){sum+=q;//新增加的边可以与之前的每一条拥有相同中点的边形成一个新的平行四边形q++;}else if(Map[i].midx!=Map[k].midx || Map[i].midy!=Map[k].midy){k=i;q=1;}i++;}printf("Case %d: %lld\n",num++,sum);}return 0;
}

View Code

转载于:https://www.cnblogs.com/alan-W/p/5769185.html

LightOJ 1058 平行四边形的判断定理相关推荐

  1. 素数/质数的判断(C++)

    思路:判断一个整数n是否为素数,只需用2到n-1之间的每一个整数去除,如果都不能被整除,那么m就是一个素数. 判断定理:"n不能够被不大于根号n的任何素数整除,则n是一个素数" 用 ...

  2. 人工智能数学基础:利用导数判断函数单调性、凹凸性、极值、最值和描绘函数图形

    一.单调性判断定理 定理: 设函数y=f(x)在[a,b]上连续,在(a,b)内可导. (1)如果在(a,b)内f(x)≥0,且等号仅在有限多个点处成立,那么函数y=f(x)在[a,b]上单调增加; ...

  3. vs中四点画矩形的算法_中考热点,初高中衔接之倒角利器四点共圆

    初中数学课程标准修改后,教材中四点共圆知识已经删除掉了,但这样一件强悍且使用简单的武器,我们还是有必要去了解的,近年来对于压轴题以几何为核心的考区来说,有时用到解题更为简洁方便,由此应该理解掌握.可以 ...

  4. 计算机数学课程标准,最新《义务教育数学课程标准版》

    <最新<义务教育数学课程标准版>>由会员分享,可在线阅读,更多相关<最新<义务教育数学课程标准版>(68页珍藏版)>请在人人文库网上搜索. 1.义务教育 ...

  5. 义务教育数学课程标准2022

    刘畅多次强调,课程教材要发挥培根铸魂.启智增慧的 作用,必须坚持马克思主义的指导地位,体现马克思主义中国化最新 成果,体现中国和中华民族风格,体现党和国家对教育的基本要求, 体现国家和民族基本价值观, ...

  6. kuangbin数学训练2

    LightOJ - 1058 Parallelogram Counting 题意 给出若干个点坐标,问最多能构成多少个不同的平行四边形 思路 找每条线段的中点重合即可 假如 m条线段的中点重合,则可构 ...

  7. html5 图形水平运动,图形与几何:抽象图形特征,发展空间观念

    小数快长大 小学数学教研工作室http://blog.sina.com.cn/u/1625734092 2011 版课标终于要公布了,新课标 修订后有哪些变化.这一讲主要讲"图形与几何&qu ...

  8. 比较全面的L1和L2正则化的解释

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|机器学习算法那些事 前言 前段时间写了一篇文章<深入 ...

  9. L1,L2正则化分析

    1. 优化角度分析 1).L2正则化的优化角度分析 在限定的区域,找到使 最小的值. 图形表示为: 上图所示,红色实线是正则项区域的边界,蓝色实线是 的等高线,越靠里的等高圆, 越小,梯度的反方向是 ...

最新文章

  1. iOS SDWEBImage和collectionView的组合,以及collectionView的随意间距设置
  2. 获取服务端https证书
  3. Kong APIGW — 基本操作
  4. Excel一对多查找
  5. 自动化配置和部署工具--puppet(1)--什么是puppet
  6. 《研磨设计模式》chap18 状态模式state(3)应用到场景
  7. Linux之文件查找命令
  8. io类游戏快速开发 2
  9. (原创)Android6.0亮屏流程之Keyguard Window绘制
  10. html基础元素案例笔记(1)
  11. 双路服务器单路运行,单路还是双路?看需求选择_机箱电源评测-中关村在线
  12. 【Mybatis-Plus】(四)分页、乐观锁插件 通用枚举 多数据源
  13. 微软公开PrintNightmare系列第3枚无补丁0day,谷歌修复第8枚已遭利用0day
  14. excel自动调整列宽_Excel双击鼠标的9种用法
  15. 多线程读文本写入OracleNoSQL数据库
  16. Python的seek函数
  17. DBF文件的初步了解(一)
  18. React 调和(Reconciler)原理理解
  19. 记录导出微信聊天记录到硬盘的过程
  20. 安装memsql与将数据库从 MySQL 移植到 MemSQL

热门文章

  1. java8 多行字符串_JDK8字符串拼接的正确姿势
  2. Python教程(非常好的教程)
  3. Oracle报错:“ORA-02292:违反完整约束条件(XXX.FKXXX)- 已找到子记录
  4. js中的substr和substring
  5. 检测SQL注入式攻击代码
  6. 11月22日云栖精选夜读:双11享Go了吗?2017阿里双11在线峰会续写科技盛宴!
  7. 应用软件暗藏猫腻,信息安全咋保障
  8. 开源大数据:Apache Pulsar
  9. android 开发热更新技术Andfix 和 Tinker
  10. NMS 原理和c++实现,已测试通过