关注
第4题 #include <bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for (int i(a); i <= (b); ++i)
#define dec(i, a, b) for (int i(a); i >= (b); --i)
#define MP make_pair
#define fi first
#define se second
typedef long long LL;
const int N = 2e5 + 100;
int T;
int a[N], b[N], aa[N];
int c[N];
int cnt;
int n;
int mx, my;
LL ans = 0;
vector <int> v[N];
inline int query(int x){
if (x <= 0) return 0;
int ret = 0;
for (; x; x -= x & -x) ret += c[x];
return ret;
}
inline void update(int x){
for (; x <= 2e5; x += x & -x) ++c[x];
}
void ins(int x){
int tmp = query(x) - query(x - 1);
if (tmp) return;
update(x);
}
int main(){
scanf("%d", &T);
while (T--){
ans = 0;
cnt = 0;
scanf("%d", &n);
rep(i, 1, n){
scanf("%d%d", a + i, b + i);
aa[++cnt] = a[i];
aa[++cnt] = b[i];
}
memset(c, 0, sizeof c);
sort(aa + 1, aa + cnt + 1);
cnt = unique(aa + 1, aa + cnt + 1) - aa - 1;
rep(i, 1, n) a[i] = lower_bound(aa + 1, aa + cnt + 1, a[i]) - aa;
rep(i, 1, n) b[i] = lower_bound(aa + 1, aa + cnt + 1, b[i]) - aa;
mx = my = 0;
rep(i, 1, 2e5) v[i].clear();
rep(i, 1, n) v[a[i]].push_back(b[i]), mx = max(mx, a[i]), my = max(my, b[i]);
dec(i, mx, 1){
int mm = 0;
for (auto u : v[i]) ins(u), mm = max(mm, u);
ans += 1ll * query(mm);
}
printf("%lld\n", ans);
}
return 0;
}
查看原帖
点赞 1
相关推荐
07-01 01:25
辽宁科技大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习生的蛐蛐区 #
47182次浏览 362人参与
# 夸夸我的求职搭子 #
199880次浏览 1917人参与
# 你认为小厂实习有用吗? #
17557次浏览 217人参与
# 硬件应届生薪资是否普遍偏低? #
75122次浏览 518人参与
# 应届生,你找到工作了吗 #
19567次浏览 144人参与
# 三一重工求职进展汇总 #
13072次浏览 60人参与
# 材料人,你们签了哪个公司 #
7233次浏览 17人参与
# 说说你知道的学历厂 #
33373次浏览 194人参与
# 计算机有哪些岗位值得去? #
15164次浏览 142人参与
# 下班后的时间你怎么安排 #
9120次浏览 131人参与
# 你找工作的时候用AI吗? #
16781次浏览 217人参与
# 面试尴尬现场 #
28530次浏览 193人参与
# 在职场上,你最讨厌什么样的同事 #
14963次浏览 151人参与
# 哪一瞬间觉得自己长大了 #
8320次浏览 183人参与
# 中核求职进展汇总 #
20567次浏览 152人参与
# 社会教会你的第一课 #
32759次浏览 424人参与
# 电网笔面经互助 #
36565次浏览 354人参与
# lastday知无不言 #
57533次浏览 469人参与
# 简历当中有水分算不算造假? #
26208次浏览 385人参与
# 如何拒绝/反向PUA #
68946次浏览 356人参与