【CodeForces 660D】Number of Parallelograms

来源:https://www.cnblogs.com/kannyi/archive/2018/04/14/8835943.html
-Advertisement-
Play Games

You are given n points on a plane. All the points are distinct and no three of them lie on the same line. Find the number of parallelograms with the v ...


You are given n points on a plane. All the points are distinct and no three of them lie on the same line. Find the number of parallelograms with the vertices at the given points.

Input

The first line of the input contains integer n (1 ≤ n ≤ 2000) — the number of points.

Each of the next n lines contains two integers (xi, yi) (0 ≤ xi, yi ≤ 109) — the coordinates of the i-th point.

Output

Print the only integer c — the number of parallelograms with the vertices at the given points.

Sample Input
4
0 1
1 0
1 1
2 0
Output
1
題解:

給你n個點的坐標,問這n個點能形成多少個不相同的平行四邊形?

思路:

根據平行四邊形的性質,兩條對角線相交於一點,所以可以將這n個點兩兩連接並找出它們的中點並記錄下來。

然後根據這些中點來判斷有多少個平行四邊形,因為只要有兩個中點重合,那麼它們兩條線就可以組成一個平行四邊形。

所以先找出重合中點的個數s,那麼它們可以組成的平行四邊形個數為C(s,2)。

將它們求和即為所求。

#include<bits/stdc++.h>
using namespace std;
struct p
{
    int x,y;
}a[2001];
int com(int n,int m)
{
    int i,s=1;
    for(i=1;i<=m;i++)
    s=s*(n+1-i)/i;
    return s;
} 
int main()
{
    int n,i,j,k,s=0;
    map<pair<int,int>,int>ma;
    map<pair<int,int>,int>::iterator it;
    cin>>n;
    for(i=1;i<=n;i++)
        scanf("%d%d",&a[i].x,&a[i].y);
        
    for(i=1;i<=n-1;i++)
        for(j=i+1;j<=n;j++)
            ma[make_pair(a[i].x+a[j].x,a[i].y+a[j].y)]++;
            
    for(it=ma.begin();it!=ma.end();it++)
        s=s+com(it->second,2);
        
    printf("%d\n",s);
    return 0;
}

 




您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 閱讀目錄 作用 super 關鍵字 訪問控制許可權 初始化順序 @Override 與方法重寫 繼承抽象類 final 關鍵字 閱讀目錄 閱讀目錄 作用 super 關鍵字 訪問控制許可權 初始化順序 @Override 與方法重寫 繼承抽象類 final 關鍵字 作用 super 關鍵字 訪問控制許可權 ...
  • 1、什麼是JMS? JMS即Java消息服務(Java Message Service)應用程式介面,是一個Java平臺中關於面向消息中間件(Message Oriented MiddleWare)的API,用於在兩個應用程式之間,或分散式系統中發送消息,進行非同步通信。Java消息服務是一個與具體平 ...
  • EL Express Language 表達式語言 就是把<% 這裡可以寫java語言 %> 這種jsp的寫法簡化變為${ }的方式 例如 action="${pageContext.request.contextPath }/login" JSTL 是JSP Standard Tag Librar ...
  • 閱讀目錄 方法重載 方法重寫 閱讀目錄 閱讀目錄 方法重載 方法重寫 方法重載 方法重寫 一、方法重載 1)在同一個類中,如果想創建多個名稱相同的方法,那麼就會用到方法重載。方法重載通過參數區分名稱相同的方法,參數可以類型不同,數目不同,或者順序不同 package com.example; pub ...
  • 多態、內部類 ...
  • 1.數據類型 1.1數字 整型int,如2 浮點型float,如3.14和314E-2 複數complex,如(-5+4) 1.2布爾值 真或假 1或0 1.3字元串 'hello world' 2.數據運算 3.三元運算 1 result = 值1 if 條件 else 值2 如果條件為真:res ...
  • 1如果如圖所示使用多重繼承,我們將看到什麼 2我們看到了基類被執行了兩次Baseclass 3代碼驗證吧 4改進措施 5完美解決=基類執行了一次 6代碼驗證 參考:本文參考學習《Python3 Object Oriented Programming》,根據自己理解改編,Dusty Phillips ...
  • 完成九宮格程式 在井字型的格局中(奇數格局),放入數字,使得每行每列以及斜對角線的和都相等 經驗規則:從1開始按順序逐個填寫,1放在第一行的中間位置,下一個數往右上角45度 處填寫。如果單邊越界則按頭尾相接地填;如果有衝突,則填在剛纔位置的底下一格 如果雙邊越界,則填在剛纔位置的底下一格。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...