題意:給你乙個二維座標上的幾個點,問在同一條直線上最多幾個點。
思路:n=700,剛開始我列舉兩個點i,j。(兩個點一條線),然後用k列舉一遍各個點。這樣算出每條線上最多的點。
用了o(n^3)的超時了。我真是太天真了。
其實在列舉每個k的時候就可以想到。k明顯有一些可以優化的地方。
優化:之前是列舉每條線,現在是列舉每個點,對於每個點i,求i和其它所有點的斜率。
找出斜率相同點的個數。(用hash空間承受不來),所有用sort(o(nlogn))即可找出。
所有現在是o(n^2*logn),200+ms。
#include#include#define max(a,b) (a>b?a:b)
using namespace std;
const int n=705;
int x[n],y[n];
double rate[n];
int n;
int main()
int ans=0;
for(int i=1;i<=n;i++)
else
}sort(rate+1,rate+index+1);
int sum=0;
for(int j=1;j<=index;j++)
else
}} printf("%d\n",ans+2);
} return 0;
}
POJ 1 11程式設計基礎之二分查詢
01 查詢最接近的元素 檢視 提交 統計 提問 總時間限制 1000ms 記憶體限制 65536kb 描述 在乙個非降序列中,查詢與給定值最接近的元素。輸入 第一行包含乙個整數n,為非降序列長度。1 n 100000。第二行包含n個整數,為非降序列各元素。所有元素的大小均在0 1,000,000,0...
11 1 執行緒簡介
我們已經中討論了程序,我們學習了unix程序的環境,程序間的關係,控制程序的方法,程序間的關係 同時我們也看到程序間共享的資源時非常少的。在本章中,我們將學習如何使用多執行緒控制來實現單個程序環境內執行多個執行緒,所有單個程序內的執行緒都有許可權訪問相同的程序元件,比如說檔案描述符以及記憶體。任何是...
11 1使用關聯容器
map是stl的乙個容器,和set一樣,map也是一種關聯式容器。它提供一對一 其中第乙個可以稱為關鍵字,每個關鍵字只能在map中出現一次,第二個可能稱為該關鍵字的值 的資料處理能力,由於這個特性,有助於我們處理一對一資料。map內部是自建一顆紅黑樹 一種非嚴格意義上的平衡二叉樹 這顆樹具有對資料自...