• 平行四边形


    请小伙伴们对自己AC的题目进行标记,注意每人只能标记一次!不知道的不要标记,恶意标记者将回收账号!!!

    问题 E: 平行四边形

    时间限制: 3 Sec  内存限制: 128 MB
    [提交] [状态]

    题目描述

    求平面上n个点构成的平行四边形个数。

    输入

    一行一个数n。
    接下来n行,每行两个数x,y,表示这个点的坐标为(x,y)。
    保证任意两点不重合,任意三点不共线。

    输出

    一行一个整数表示平行四边形个数。

    样例输入 Copy

    4
    0 1
    1 0
    1 1
    2 0
    

    样例输出 Copy

    1
    

    提示

    对于100%的数据:n≤1500。
    #pragma GCC optimize(2)
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<map> 
    #include <math.h>
    using namespace std;
    typedef long long ll;
    //c(n,k)*c(m,k)*k! 
    inline int read()
    {
        int x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    const int maxn=1e5+10;
    const int mod=1e9+7;
    struct node{
        double x;
        double y;
    }a[maxn];
    vector<node>v;
    bool cmp(node a,node b){
        if(a.x==b.x){
            return a.y<b.y;
        }
        return a.x<b.x;
    }
    int n;
    void inint(){
        cin>>n; 
        for(int i=0;i<n;i++){
            scanf("%lf%lf",&a[i].x,&a[i].y);
        }
    }
    int main(){
        inint();
        for(int i=0;i<n;i++){
            for(int j=i+1;j<n;j++){
                node p;
                p.x=(a[i].x+a[j].x)/2,p.y=(a[i].y+a[j].y)/2;
                v.push_back(p);
            }
        }
        sort(v.begin(),v.end(),cmp);
        int t=1;
        int ans=0;
        int p=v.size()-1;
        for(int i=0;i<p;i++)
        {
            if(v[i].x==v[i+1].x&&v[i].y==v[i+1].y){
                t++;
            }
            else
            {
                ans=ans+t*(t-1)/2;
                t=1;
            }
        }
        printf("%d",ans);
    }
  • 相关阅读:
    PAT甲级——A1059 Prime Factors
    PAT甲级——A1058 A+B in Hogwarts
    PAT甲级——A1057 Stack
    hdu2665 主席树模板题
    存两个图论模板
    存两个图论模板
    存两个图论模板
    codevs1080 第一次用ZKW线段树
    codevs1080 第一次用ZKW线段树
    codevs1080 第一次用ZKW线段树
  • 原文地址:https://www.cnblogs.com/lipu123/p/12895782.html
Copyright © 2020-2023  润新知