HDU6055空間內n個點能組成多少個正方形
#include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <vector> using namespace std ; #define eqs 1e-9 struct node{ double x , y ; }p[1100] ; bool cmp(node a,node b) { return ( a.x < b.x || ( a.x == b.x && a.y < b.y ) ) ; } bool judge(double x,double y,int n) { int low = 0 , mid , high = n-1 ; while( low <= high ) { mid = (low + high) / 2 ; if( fabs(p[mid].x-x) < eqs && fabs(p[mid].y-y) < eqs ) return true ; else if( p[mid].x-x > eqs || ( fabs(p[mid].x-x) < eqs && p[mid].y-y > eqs ) ) high = mid - 1 ; else low = mid + 1 ; } return false ; } int main() { int n , i , j , num ; double x , y , xx , yy ; while( scanf("%d", &n) !=EOF) { num = 0 ; for(i = 0 ; i < n ; i++) { scanf("%lf %lf", &p[i].x, &p[i].y) ; } sort(p,p+n,cmp) ; for(i = 0 ; i < n ; i++) { for(j = i+1 ; j < n ; j++) { if( i == j ) continue ; x = (p[i].x+p[j].x)/2 ; y = (p[i].y+p[j].y)/2 ; xx = p[i].x - x ; yy = p[i].y - y ; if( judge(x+yy,y-xx,n) && judge(x-yy,y+xx,n) ) { num++ ; } } } printf("%d\n", num/2) ; } return 0; }
#include <bits/stdc++.h> #define ll long long #define mk make_pair #define y1 yyy using namespace std; const int N = 1e3 + 5; map< pair<int, int>, bool> M; int x[N], y[N], n, ans; int main() { int T; while (scanf("%d", &n) != EOF) { ans = 0; M.clear(); for (int i = 1; i <= n; i++) { scanf("%d %d", x + i, y + i); M[mk(x[i], y[i])] = 1; } for (int i = 1; i <= n; i++) { for (int j = i + 1; j <= n; j++) { int dx = y[j] - y[i]; int dy = x[i] - x[j]; int ok = 0; if (M.count(mk(x[i] + dx, y[i] + dy))) ok++; if (M.count(mk(x[j] + dx, y[j] + dy))) ok++; if (ok == 2) ans++; ok = 0; if (M.count(mk(x[i] - dx, y[i] - dy))) ok++; if (M.count(mk(x[j] - dx, y[j] - dy))) ok++; if (ok == 2) ans++; } } printf("%d\n", ans / 4); } }
相關推薦
HDU6055空間內n個點能組成多少個正方形
#include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #
有 1、2、3、4 個數字,能組成多少個互不相同且無重復數字的三位數?都是多 少?
set 復數 集合 form for 依次 sam code 合成 """ 題目:有 1、2、3、4 個數字,能組成多少個互不相同且無重復數字的三位數?都是多 少? """ # 解決思路:三個for循環依次從4個數中取1個 把所有情況都包括 利用集合來去重 samp
農田開發 NOJ (已知N個點選取3個求最大三角形面積問題)
E - 農田開發時間限制(普通/Java) : 1000 MS/ 3000 MS 執行記憶體限制 : 65536 KByte總提交 : 83 測試通過 : 43 比賽描述有一塊農田,田地裡安放上N個小
有1,2,3,4四個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?
public class MainActivity extends AppCompatActivity { int i=0; //儲存百位上的數 int j=0; //儲存十位上的數 in
Bellman-Ford算法——為什麽要循環V-1次?圖有n個點,又不能有回路,所以最短路徑最多n-1邊。又因為每次循環,至少relax一邊所以最多n-1次就行了!
bold source 頂點 路由 偽代碼 font 端點 -a 自底向上 單源最短路徑 給定一個圖,和一個源頂點src,找到從src到其它所有所有頂點的最短路徑,圖中可能含有負權值的邊。 Dijksra的算法是一個貪婪算法,時間復雜度是O(VLogV)(使用最小堆)。但是
C++求解:平面上有n個點,問總共可以組成多少條直線
思路 對輸入的點,兩兩組合求取斜率,這樣可能會出現某一斜率對應多對點。然後對屬於同一斜率的多對點,當成一幅圖,求取連通分支個數。 這裡對對屬於同一斜率的多對點,當成一幅圖,求取連通分支個數解釋一下: 假設對於斜率k=1.0,有點對 (1,1) ,(2,2
n個點求 能構成多少個三角形
思路:1、先求出n個結點中取出三個結點 有多少種方法 C(n,3)的組合; 2、在找出三個點不能組成三角形的情況;有斜率相等和不存在斜率兩種情況; 完整程式碼如下: #include<ios
HDU5784(n個點組成多少鈍角三角形,然而無論什麼三角形都是同理的)
題意:給你n個點,可以組成多少鈍角三角形。 分析:答案毋庸置疑,(銳角個數-(鈍角個數+直角)*2)、3; 暴力的方法,枚舉出所有的邊,然後在列舉角度,但是這樣是n^4的。太暴力 但是如果對斜率拍個序,這樣就能把兩兩角在銳角和鈍角的區間劃出來。再用雙指標列舉。複雜度就只有n
空間中任意三個點組成三角形面積
問題1:遍歷所有可能的3個點 1 2 3 for(int i = 0; i < n; i++) for(int j = i + 1; j < n; j++) for(int k = j + 1; k
(hdu step 7.1.6)最大三角形(凸包的應用——在n個點中找到3個點,它們所形成的三角形面積最大)
三角形 struct names com 都在 acm sni 都是 tran 題目:最大三角形Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S
兩個內存條不能啟動
無法啟動 時間 img 再次 image justify 1-1 p s logs 新買了一個金士頓DDR2 2G的內存,原來那個也是一樣的,兩條插上後電腦無法啟動,拔下任意一條都能啟動, 怎麽回事那? 【解決方法】 設置BIOS的延遲時間。我分析可能是兩個內存條需要更
計算任意兩個個位整數之間所能組成的奇數個數
lac .com logs onclick 判斷 document com 編寫 htm <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>&
【XSY1295】calc n個點n條邊無向連通圖計數 prufer序列
ring pre end ctime 節點 splay 按順序 sin algorithm 題目大意 求\(n\)個點\(n\)條邊的無向連通圖的個數 \(n\leq 5000\) 題解 顯然是一個環上有很多外向樹。 首先有一個東西:\(n\)個點選\(k\
有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?
無重復 個數 nbsp 宋體 spa 個數字 bsp != 重復數 .程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去掉不滿足條件的排列。 2.程序源代碼: ‘‘‘ for i in range(1,5): for j in range
E - Magic Points (0到4*n-5個點圍成正方形,最多交點)
滴答滴答---題目連結 Given an integer , we say a point on a 2D plane is a magic point, if and only if both and ar
判斷經緯度點座標是否在經緯度點所組成的面內
maven的pom配置 <dependency> <groupId>com.vividsolutions</groupId> <artifactId>jts</artifactId> <version>
java經典題丨有1、2、3、4四個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?
組合成三個互不重複的數字,不難理解,其他的好辦,但是互不重複,就有點難度了,這個是解決本題思路的重點,程式碼如下: public static void main(String[] args) { int x=0,y=0,z=0,count=0; for(x=1;x<=4;
[素數篩] 求n的不同因數之和能組成的連續1~x的x ZOJ4040
Number Theory Time Limit: 1 Second Memory Limit: 65536 KB Given an integer , calculate the smalle
並查集:按秩合併 $n$ 個點所得樹高不超過 $\lfloor\log n \rfloor$
用 $h_n$ 表示按秩合併 $n$ 個點所得樹的最大高度。 有 $h_1 = 0, h_2 = 1, h_3 = 1, h_4 = 2, h_5 = 2, \dots$ 有如下地推: \[ h_n = \max_{1\le i\le n-1} \max(h_i, h_{n-i}) + [h_i = h_{n
題目:有1、2、3、4個數字,能組成多少個互不相同且無重複數字的四位數?都是多少?
#include<stdio.h> int main() { int i,j,k,t=0,l; for(i=1;i<5;i++) for(j=1;j<5;j++) for(k=1;k<5;k++) for(l=1;l<5;l+