時(shí)間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 131072K,其他語言262144K
一、題目內(nèi)容
題目描述
FST是一名可憐的小朋友,他很強(qiáng),但是經(jīng)常fst,所以rating一直低迷。
但是重點(diǎn)在于,他非常適合ACM!并在最近的區(qū)域賽中獲得了不錯的成績。
拿到獎金后FST決定買一臺新筆記本,但是FST發(fā)現(xiàn),在價(jià)格能承受的范圍內(nèi),筆記本的內(nèi)存和速度是不可兼得的。
可是,有一些筆記本是被另外一些“完虐”的,也就是內(nèi)存和速度都不高于另外某一個(gè)筆記本,現(xiàn)在FST想統(tǒng)計(jì)一下有多少筆記本被“完虐”。
輸入描述
第一行一個(gè)正整數(shù)n,
表示筆記本的數(shù)量。接下來n行,每行兩個(gè)正整數(shù)Mi,Si表示這款筆記本的內(nèi)存和速度。
n≤10^5,Mi,Si ≤10^9。
輸出描述
一行,一個(gè)正整數(shù),表示被完虐的筆記本數(shù)。
示例1
輸入
4
100 700
200 500
50 100
300 400輸出
1
備注
數(shù)據(jù)保證Mi互不相同,Si也互不相同
二、解題思路
依據(jù)題意,只要被其中一個(gè)筆記本完虐即+1,這里,我們可以直接暴力枚舉,遇到完虐將結(jié)果+1,break退出內(nèi)循環(huán),直至所有都比較一次,輸出結(jié)果即可。當(dāng)然,這中間過程我們可以進(jìn)行優(yōu)化,比如在比較之前先將筆記本性能有低到高排序(內(nèi)存為主、速度為次,多條件排序),然后再進(jìn)行比較,這里可以進(jìn)行逆序比較,原因是Mi,Si越大,性能越優(yōu)越,越容易完虐其他機(jī)器。
代碼實(shí)操
#include<bits/stdc++.h>
using namespace std;
struct Node {
int m,s;
bool friend operator < (Node a, Node b){
return a.m == b.m ? (a.m < b.m) : (a.s < b.s);
}
}p[100010];
int main() {
int n;
cin >> n;
for(int i = 0; i < n; i++) {
cin >> p[i].m >> p[i].s;
}
sort(p, p + n);
int result = 0;
for(int i = 0; i < n - 1; i++) {
int m = p[i].m;
int s = p[i].s;
for(int j = n - 1; j > i; j--) {
if (s < p[j].s && m < p[j].m) {
result++;
break;
}
s = p[i].s;
m = p[i].m;
}
}
cout << result << endl;
return 0;
}