FZU 2231 平行四边形数

来源:互联网 发布:获取有网络的ip 编辑:程序博客网 时间:2024/05/22 01:51

 Problem 2231 平行四边形数

Accept: 171    Submit: 536
Time Limit: 2000 mSec    Memory Limit : 32768 KB

 Problem Description

在一个平面内给定n个点,任意三个点不在同一条直线上,用这些点可以构成多少个平行四边形?一个点可以同时属于多个平行四边形。

 Input

多组数据(<=10),处理到EOF。

每组数据第一行一个整数n(4<=n<=500)。接下来n行每行两个整数xi,yi(0<=xi,yi<=1e9),表示每个点的坐标。

 Output

每组数据输出一个整数,表示用这些点能构成多少个平行四边形。

 Sample Input

40 11 01 12 0

 Sample Output

1

【分析】
         这是一道计算几何的题目,刚开始通过求两对线段平行的个数k,用公式k*(k-1)/2,打完之后才想起来,题目要求平行四边形的个数,点是相连的(自己还是太菜,想问题太片面,想到哪打哪,根本没认真思考敲打),之后想通过枚举来求平行四边形的个数,不过一想是500^4,稳超时,思路就断了,后来通过博客,了解到证明四边形是平行四边形的公式,“对角线平分的四边形是平行四边形”,这样就可以求出每两点的中间点(这里没有必要求出中点,只需求出它的两倍就行),进行排序,判断以每个中点为平行四边形中点的四边形的个数,用公式k*(k-1)/2求出以这点为中点的平行四边形的个数。

【代码】
#include<stdio.h>#include<algorithm>using namespace std;struct node{    int x,y;}s[250010];int cmp(node a,node b){    if(a.x!=b.x)        return a.x<b.x;    else        return a.y<b.y;}int main(){    int n;    while(~scanf("%d",&n))    {        int p[510]={0},q[510]={0};        for(int i=0;i<n;i++)            scanf("%d %d",&p[i],&q[i]);        int l=0;        for(int i=0;i<n-1;i++)        {            for(int j=i+1;j<n;j++)            {                s[l].x=p[i]+p[j];                s[l].y=q[i]+q[j];                l++;            }        }        sort(s,s+l,cmp);        int sum=0,k=1;        for(int i=1;i<l;i++)        {            if(s[i].x==s[i-1].x&&s[i].y==s[i-1].y)                k++;            else            {                sum+=k*(k-1)/2;                k=1;            }        }        if(k!=1)            sum+=k*(k-1)/2;        printf("%d\n",sum);    }    return 0;}

有什么错误一定要留意欧~





0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 快手直播权限被收回了怎么办 腾讯手游助手玩游戏卡怎么办 电脑直播视频打不开了怎么办 平板进水开不了机怎么办 苹果平板进水开不了机怎么办 苹果平板电脑进水了怎么办 电脑换主机以前的文件怎么办 货车卖了没过户怎么办 微交易出金不了怎么办 直播时出现央视影音客户端怎么办 qq账号暂时无法登录怎么办 饿了吃东西胃疼怎么办 早上不吃饭胃疼怎么办 孕晚期胃疼呕吐怎么办 胃疼了一晚上怎么办 微信视频图像倒立怎么办 ps链接图层锁定怎么办 慕课过时间了怎么办 异地恋又要考研怎么办 阴阳师手机绑定上限了怎么办 高考口令卡丢了怎么办 网易将军令换手机了怎么办 须弥bb有弱点土怎么办 战网密码忘记了怎么办 梦三账号忘了怎么办 快手手机号被注册了怎么办 快手该手机号已注册怎么办 手机号被别人注册了快手怎么办 快手显示手机号已注册怎么办 163的邮箱忘了怎么办 河长制账号密码忘了怎么办 网易登录名忘了怎么办 网易通行证安全手机忘了怎么办 美团数据获取失败怎么办 扣扣图片加载不出来怎么办 电脑qq最小化后不见了怎么办 uwp桌面快捷图标显示异常怎么办 网易云自动切歌怎么办 捡到小米手机怎么办才能自己用 dnf启动安装程序出错怎么办 苹果手机相册视频下载出错怎么办