時間限制: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...