题目描述:
FST是一名可怜的小朋友,他很强,但是经常fst,所以rating一直低迷。
但是重点在于,他非常适合ACM!并在最近的区域赛中获得了不错的成绩。
拿到奖金后FST决定买一台新笔记本,但是FST发现,在价格能承受的范围内,笔记本的内存和速度是不可兼得的。
可是,有一些笔记本是被另外一些“完虐”的,也就是内存和速度都不高于另外某一个笔记本,现在FST想统计一下有多少笔记本被“完虐”。
输入描述:
第一行一个正整数n, 表示笔记本的数量。接下来n行,每行两个正整数Mi,Si表示这款笔记本的内存和速度。 n≤1e5,Mi,Si≤1e9
输出描述:
一行,一个正整数,表示被完虐的笔记本数。
思路:将每队数据存到pair中,然后对其进行快速排序,STL中的sort函数默认对first进行排序,first相等对second进行排序。升序排序后我们对其进行从后往前的遍历,一直维护second最大值并对数据进行比较就可以了。
代码如下(供参考):
#include<iostream> #include<algorithm> #include<cstdio> using namespace std; pair<int, int> a[100010]; int main() { int n, j, k; cin >> n; for (int i = 0;i < n;i++) { scanf("%d%d",&j,&k); a[i].first = j; a[i].second = k; } sort(a, a + n); int ans = 0; j = n - 1; for (int i = n - 2;i >= 0;i--) { if (a[j].second > a[i].second) { if (a[j].first > a[i].first) ans++; } else j = i; } cout << ans << endl; return 0; }
求牛币,QWQ