6 8 「最大點」 預排序

2021-09-24 05:45:31 字數 812 閱讀 2406

時間限制:1秒

空間限制:32768k

p為給定的二維平面整數點集。定義 p 中某點x,如果x滿足 p 中任意點都不在 x 的右上方區域內(橫縱座標都大於x),則稱其為「最大的」。求出所有「最大的」點的集合。(所有點的橫座標和縱座標都不重複, 座標軸範圍在[0, 1e9) 內)

如下圖:實心點為滿足條件的點的集合。請實現**找到集合 p 中的所有 」最大「 點的集合並輸出。

輸入描述:

第一行輸入點集的個數 n, 接下來 n 行,每行兩個數字代表點的 x 軸和 y 軸。

對於 50%的資料, 1 <= n <= 10000;

對於 100%的資料, 1 <= n <= 500000;

輸出描述:

輸出「最大的」 點集合, 按照 x 軸從小到大的方式輸出,每行兩個數字分別代表點的 x 軸和 y軸。

輸入例子1:

51 2

5 34 6

7 59 0

輸出例子1:

4 67 5

9 0現根據y值進行排序,然後比較比較當前點的x值與改點上面的所有點的最大x值,如果小於說明改點一定是最大點。

但是由於時間限制,只能過80%

">#includeusing namespace std;

struct loc

;int cmp(const loc& a, const loc& b)

int main()

sort(a,a+n,cmp);

int maxx=-1;

for(int i=0;imaxx)

}}

頭條上機演算法題(最大點問題)

p為給定的二維平面整數點集。定義 p 中某點x,如果x滿足 p 中任意點都不在 x 的右上方區域內 橫縱座標都大於x 則稱其為 最大的 求出所有 最大的 點的集合。所有點的橫座標和縱座標都不重複,座標軸範圍在 0,1e9 內 如下圖 實心點為滿足條件的點的集合。請實現 找到集合 p 中的所有 最大 ...

可獲得的最大點數

幾張卡牌 排成一行,每張卡牌都有乙個對應的點數。點數由整數陣列 car dpoi nt scardpoints cardpo ints 給出。每次行動,你可以從行的開頭或者末尾拿一張卡牌,最終你必須正好拿 k kk 張卡牌。你的點數就是你拿到手中的所有卡牌的點數之和。給你乙個整數陣列 car dpo...

hdu 3657 最大點權獨立集)

思路我就不詳細講了,這位大牛講的很清楚 1 include2 include3 include4 define maxn 55 5 define maxm 55 55 6 define inf 1 30 7using namespace std 8struct edgeedge maxm 11 11...