尋找切線 評測姬有點水啊

2021-08-18 05:26:04 字數 1426 閱讀 6795

時間限制:

10000ms

單點時限:

1000ms

記憶體限制:

256mb

給定平面上n個點p1=(x1, y1), p2=(x2, y2), ... pn=(xn, yn)。  

請你從中找到兩個不同的點pi和pj滿足:其他所有點都在pi和pj連線的同一側(可以在連線上)。

如果有多組答案滿足條件,你可以輸出任意一組。

第一行包含乙個整數n。  

以下n行每行包含兩個整數xi和yi。  

對於50%的資料,1 ≤ n ≤ 1000  

對於100%的資料,1 ≤ n ≤ 100000 0 ≤ xi, yi ≤ 1000000

輸出由乙個空格隔開的兩個整數i和j,注意1 ≤ i, j ≤ n且i ≠ j。

樣例輸入

6  

0 10

7 0

8 8

10 18

15 13

20 4

樣例輸出
5 6
中文題就不說題意了.

也沒有外人看這個部落格吧(滑稽臉)

思路:  一開始做這道題的時候沒有想用斜率來判斷,本人數學比較菜. 想當然的以為最邊上的兩個點就是所求點.然後竟然ac了

emmm這是學長的竟然...後來隨便給我畫了三個點...就不可能a

下面開始正解分析:

首先這兩個點的連線要使得其他各點都在這連線的一邊,那麼這連線的斜率必然是最大或者最小的.

(因為題目沒什麼要求,那我就求最小的了.)

其次 斜率有可能為零也有有正無窮或者負無窮的情況.那麼就要特判這些情況.

思路: 

首先找最邊上的兩個點,那麼就直接給他們排個序.結構體排序....

從題目樣例的樣子看,這是要求輸出原來的序號.那麼還得把這些點記錄一下id.

那麼找到這兩個最小點之後.(最邊上)自然得判斷一下他們的連線是不是垂直x 軸.也就是說斜率是不是無窮或者零.

然後從第2個開始計算並且比較,求出使得斜率最小的兩個點.

下面就上**了...

#include#include#include#include#include#define maxn 1000000+10

using namespace std;

struct point

pp[maxn];

int cmp(point x,point y)

sort(pp+1,pp+1+n,cmp);

if(pp[1].x==pp[2].x||pp[1].y==pp[2].y)

cout

如若有錯誤之處,還往指證.

尋找獨享私密ip的方法有哪些

人的ip使用越來越廣泛,人們也逐漸認識到獨享ip的好處,尤其是一些企業 個人 也不少,獨享ip帶來的好處逐漸深入人心,使用獨享ip,的安全性也得到了保證,不再像共享ip那樣,門可羅雀,水洩不通,一家 受到限制,可能所有使用同乙個ip位址的 都會受到牽連。網上有很多提供獨享ip 服務的 和軟體,很多人...

判斷鍊錶是否有環以及尋找環入口

思路 採用 快慢指標 查檢查鍊錶是否含有環。讓乙個指標一次走一步,另乙個一次走兩步,如果鍊錶中含有環,快的指標會再次和慢的指標相遇。這裡需要注意的一點是演算法中迴圈的條件,這是乙個很容易被忽略的細節。1 因為fast指標比slow指標走得快,所以只要判斷fast指標是否為空就好。由於fast指標一次...

Catenyms (尋找有向尤拉路 輸出路徑)

題目鏈結 大意 給你一串單詞,首尾相同的單詞才能相連,存在的話按字典序最小的輸出。單詞的首尾暗示了這是乙個有向圖 思路 本題的目的是考察找有向圖存在尤拉迴路的條件,1.如果圖連通,且每個點的出度等於入度,則存在尤拉迴路 2 如果圖連通,且恰有一點u的出度比入度大1,另有一點v的出度比入度小1,其餘的...