小石的妹子
時間限制: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
23221
第一輪取第 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...