牛客小白月賽16 小石的妹子 (貪心 )

2021-09-25 19:43:46 字數 1355 閱讀 3367

小石的妹子

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 262144k,其他語言524288k

64bit io format: %lld

小石有 n 個妹子,每個妹子都有乙個細心程度 aia_iai​ 和乙個熱心程度 bib_ibi​,

小石想給她們乙個重要程度 tit_iti​(重要程度為 1 表示最重要,重要程度越小表示越重要)。

如果乙個妹子 i 的細心程度和熱心程度都比妹子 j 大,那麼妹子 i 的重要程度要大於妹子 j 的重要程度,即妹子 i 比妹子 j 重要。

流程如下:

每次從所有沒有重要程度的妹子中,找到若干妹子。對於這些妹子的任意乙個,需要保證沒有其他妹子比她更重要。然後把她們的重要程度標為 1 。下一次再從剩下沒有重要程度的妹子中找到若干妹子,依然符合上述條件,然後把她們的重要程度標為 2,……,重複直到所有妹子都有自己的重要程度。

由於妹子太多,小石忙不過來,請你幫幫他。

第一行輸入乙個正整數 n,表示妹子的數量。

接下來 n 行,每行兩個正整數 ai,bia_i,b_iai​,bi​,描述每個妹子的細心程度和熱心程度。 

保證所有的 aia_iai​ 兩兩不等,所有的 bib_ibi​ 兩兩不等。

共 n 行,第 i 行輸出乙個正整數 tit_iti​ 表示第 i 個妹子的重要程度。
示例1

複製

5

1 42 2

3 34 1

5 5

複製

232

21

第一輪取第 5 個妹子(5 5),因為沒有其他妹子比她重要,標記為 1;

第二輪取編號為 1,3,4 的妹子,因為對於其中的任意乙個妹子,都沒有其他妹子比她們重要,標記為 2;

第三輪把編號為 2 的妹子標記為 3 。

1≤n≤105,1≤ai,bi≤1091 \leq n \leq 10^5,1 \leq a_i,b_i \leq 10^91≤n≤105,1≤ai​,bi​≤109
#includeusing namespace std;

const int m = 100005;

int rnk[m];

struct node

}a[m], b[m];

int main()

sort( a, a+n );

for( int i = 0; i < n; i++ )

if( rnk[a[i].id] == 0 )

} for( int i = 0; i < n; i++ )

cout << rnk[i] << endl;

return 0;

}

牛客小白16月賽 小石的妹子

題目 小石的妹子 題意 給n個妹子排序,i妹子比j妹子好的需要滿足ai aj bi bj,當然如果一大一小的是無法比較大小的,於是排名就相同。思路 這是個二維偏序的問題,先對一維排序 即是按a從大到小排序 之後我們考慮b,對於第k個妹子,在排序完之後,那麼他前面的妹子的a都比她的,於是考慮b即可,顯...

牛客小白月賽16 小石的妹子 線段樹

小石的妹子 官方題解 因為有兩維的限制,所以我們先按 ai 從大到小排一下序,對於排序後的第 i 個妹子,她的排名就是 max 1 bj bi 那麼我們把排名 bi 當成下標,把 rki 當成值,用線段樹維護一下區間 max 即可。將bi排序,將每個妹子對應的bi變成排序後bi的編號,對ai進行從大...

牛客小白月賽16

很容易得到n 1時,因為小石先手,所以小石一定輸 而n!1時,假設n 5 小石先取1 小陽取2 4 小石去3 小陽輸,無論怎樣小石都有贏的機會 includeusing namespace std int main 打表求出1 1e3之間的所有三角形每層之和 include define ll lo...