關於一個平面內矩形個數的問題
問題
一個平面內的 n個點,以這 n個點為頂點,最多能構成多少個矩形?點的排列是自己決定的。
先說結論:構成矩形的個數,上界是 O(n2n ),下界是 Ω(n2)。
上界
記 Ca,b表示 a,b為直徑的圓。
對於每一個點 pi,如果 pa,pb,pc,pd能構成一個矩形,當且僅當 Cpa,pc=Cpb,pd。
記 di為 Ci上相反的點對個數,就是說 di=∣{(pj,pk)∣Ci=Cpj,pk}∣。
可以得出,矩形個數就是 ∑i=1m2di×(di−1), ∑i=1mdi=2n×(n−1)。
我們假設 d1≥d2≥⋯≥dn。記 k滿足 dk>2n ,dk+1≤2n ,由於兩圓只可能交於兩點,因此可以得到 k≤n 。
證明:如果 k>n ,那麼可以發現點的個數 ≥∑i=1k(2di−2(i−1))>4kn −k(k−1)>4n−n+n >n,因此 k必定 ≤n 。
那麼矩形個數就是
i=1∑m2di×(di−1)≤
相關推薦
關於一個平面內矩形個數的問題
問題 一個平面內的 n n n個點,以這
在一個範圍內隨機生成指定個數的不重復隨機數
set max random void class public ash logs pub public static void setRandom(int min, int max, int n, HashSet<Integer> set) {
HDU-1695 GCD(求一個區間內與一個數互質的個數)
題意: 給你一個T,是樣例的個數,接下來是五個數l1,r1,l2,r2,k 前四個數代表兩個區間(l1,r1),(l2,r2)這個題l1=1,l2=1; 取x1屬於(1,r1),x2屬於(1,r2); 求使得gcd(x1,x2)==k 的(x1,x2)的個數,特
判斷平面內一個點 是否在兩個點所確定的長軸橢圓內
# 點到兩個端點所確定的直線的距離 classic formula is: # # d = [(x2-x1)*(y1-y)-(x1-x)*(y2-y1)] / sqrt((x2-x1
如何判斷一個點在矩形內
最近在做遊戲伺服器中技能模組,往往要掃描一個區域,判斷npc是不是在我這個區域內,在的話就發傷害。 就需要實現一下,對於一個點是否在矩形內的判斷。 只需要判斷該點是否在上下兩條邊和左右兩條邊之間就行,判斷一個點是否在兩條線段之間夾著,就轉化成,
寫一個android內置android程序
nod 編譯錯誤 外部 post 沒有 ant gen fun ews 當我們編譯完畢android源代碼之後,就須要對他做點什麽事情,我如今正在看老羅的”Android源代碼情景分析”一書。在這裏主要是記錄一些書中沒有說清楚的地方. 相同。我們創建一
一個關於內存泄露的問題
roi androi 內存 and ongl andro 泄露 hao123 內存泄露 aNDROID%5FUI%E5%B8%83%E5%B1%80%E8%AE%BE%E8%AE%A1%E4%BC%98%E5%8C%96 http://music.hao123.com/s
如何在一個月內改善你的生活
ogr https pro 層次 簡單的 能夠 mir 心態 人做 Tips 原文作者:Thomas Oppong 原文地址:How to Improve Your Life in Just a Month 你不能改變你不曾準備放棄的東西。 你就是你反復做的事。你的習
利用Chrome的Heap Snapshot功能分析一個時間段內的內存占用率
-i 獲取 logs post ges summary ima 下拉菜單 allocated 在下圖測試代碼第13行和第16行設斷點. 以調試方式運行,首先斷點在第13行處觸發: 打開Chrome開發者工具,點擊Profiles tab, 再點擊按鈕"Take Snaps
DELPHI一個對付內存匯漏的辦法和技巧
客戶端程序 類型 手動 顯示 釋放內存 解決 div 對話 時間 DELPHI是要手動釋放內存的,如果客戶端程序有泄漏,可能不是很大問題, 但是如果你是用DELPHI做服務端程序,有泄漏的話,時間一長會占用很多內存,直到服務端程序要關閉重啟.所以內存泄漏還是有害的. 而且程
js 日期比較大小,js判斷日期是否在區間內,js判斷時間段是否在另外一個時間段內
turn BE 時間格式 .get AR 解析 sda pan color /** * 日期解析,字符串轉日期 * @param dateString 可以為2017-02-16,2017/02/16,2017.02.16
第十一個算法-兩個數組的交集
tag 又是 循環 int ++ 浪費時間 返回 次數 節點 給定兩個數組,寫一個方法來計算它們的交集。 例如:給定 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2]. 註意: 輸出結果中每個元素出現的次數,應與元素在
編寫一個方法去掉一個數組的重復元素
i++ 否支持 個數 function prot res 去掉 return 否則 一、遍歷數組法: //最簡單數組去重 function unique1(array){ var n = [] ; //一個新的臨時數組 //遍歷當前數組 for(var i = 0; i
sql 語句查詢今天、昨天、近7天、近30天、一個月內、上一月 資料
SQL語句如下: 查詢當天的所有資料 SELECT * FROM 表名 WHERE DATEDIFF(欄位,NOW()) = 0 SELECT * FROM 表名 WHERE to_days(時間欄位名) = to_days(now()); 查詢昨天的所有
POJ 3252 區間內一個數的二進位制中0的數量要不能少於1的數量(數位DP)
題意:求區間內二進位制中0的數量要不能少於1的數量 分析:很明顯的是數位DP; 菜鳥me : 整體上是和數位dp模板差不多的 , 需要注意的是這裡有前導零的影響 , 所以需要在dfs()裡面增加zor 變數的限制條件 , 那麼我們的dp[i][j] 是表示第i 位置 ,&nb
OpenGL建立一個顏色漸變矩形
OpenGL建立一個帶顏色的矩形 :https://blog.csdn.net/qq_15267341/article/details/83476125 這一篇文章是在上一篇的基礎上進行的,只有兩個地方更改一下 main.cpp這個檔案
四、畫一個黑色的矩形框
畫完三角形,教完著色器,現在該學紋理了。 一、環境配置 新的教學內容,又要增加新的配置環境了。SOIL2 的環境配置可以參考我的 這篇部落格 。 二、程式碼 main.cpp #include <iostream> //
雙網絡卡怎麼同時一個上內網一個上外網
1、首先設定第一塊網絡卡,假設為本地連線,找到本地連線,開啟IPV4協議,可以設定固定地址,也可以自動獲取。 2、開啟CMD命令列,輸入route print檢視路由表。我們發現永久路由是空洞,因為我們用的是自動獲取的IP地址。 3、如果是固定IP地址的話,永舊路由上會出現
編寫一個演算法判斷一個數是不是“快樂數”。
一個“快樂數”的定義為:對於一個正整數,每一次將該數替換為它每個位置上的數字的平方和,然後重複這個過程直到這個數變為1,也可能是無限迴圈但始終變不到1.如果可以變為1,那麼這個數就是快樂數。 例項: 輸入:19 輸出:true 解釋: 1^2 + 9^2 = 82 8^2
SQL語句查詢今天、昨天、近7天、近30天、一個月內、上一月 資料
SQL語句如下: 查詢當天的所有資料 SELECT * FROM 表名 WHERE DATEDIFF(欄位,NOW()) = 0 SELECT * FROM 表名 WHERE to_days(時間欄位名) = to_days(now());