链接:https://www.nowcoder.com/acm/contest/4/A
来源:牛客网

题目描述

n支队伍一共参加了三场比赛。
一支队伍x认为自己比另一支队伍y强当且仅当x在至少一场比赛中比y的排名高。
求有多少组(x,y),使得x自己觉得比y强,y自己也觉得比x强。
(x, y), (y, x)算一组。

输入描述:

第一行一个整数n,表示队伍数; 接下来n行,每行三个整数a[i], b[i], c[i],分别表示i在第一场、第二场和第三场比赛中的名次;n 最大不超过200000

输出描述:

输出一个整数表示满足条件的(x,y)数;64bit请用lld

输入例子:
4
1 3 1
2 2 4
4 1 2
3 4 3
输出例子:
5

-->

示例1

输入

4
1 3 1
2 2 4
4 1 2
3 4 3

输出

5

题解

三维偏序,$cdq$分治。

总的方案数有$n*(n - 1) / 2$种,不满足条件的就是三维偏序,减去即可。

#include<bits/stdc++.h>
using namespace std; const int maxn = 2e5 + 10;
struct X {
int a, b, c;
int id;
}s[maxn];
int n;
int f[maxn];
int c[maxn]; int lowbit(int x) {
return x & (-x);
} void update(int p, int v) {
for(int i = p; i < maxn; i = i + lowbit(i)) {
c[i] += v;
}
} int sum(int p) {
int res = 0;
while(p) {
res += c[p];
p -= lowbit(p);
}
return res;
} bool cmpA(const X& a, const X& b) {
return a.a < b.a;
} bool cmpB(const X& a, const X& b) {
return a.b < b.b;
} bool cmpID(const X& a, const X& b) {
return a.id < b.id;
} void cdq(int L, int R) {
if(L == R) return;
int mid = (L + R) / 2;
sort(s + L, s + mid + 1, cmpB);
sort(s + mid + 1, s + R + 1, cmpB);
int p1 = L;
for(int i = mid + 1; i <= R; i ++) {
while(p1 <= mid && s[p1].b <= s[i].b) {
update(s[p1].c, 1);
p1 ++;
}
f[s[i].id] += sum(s[i].c);
}
for(int i = L; i < p1; i ++) {
update(s[i].c, -1);
}
sort(s + L, s + mid + 1, cmpID);
sort(s + mid + 1, s + R + 1, cmpID);
cdq(L, mid);
cdq(mid + 1, R);
} int main() {
scanf("%d", &n);
for(int i = 1; i <= n; i ++) {
scanf("%d%d%d", &s[i].a, &s[i].b, &s[i].c);
}
sort(s + 1, s + 1 + n, cmpA);
for(int i = 1; i <= n; i ++) {
s[i].id = i;
// printf("%d %d %d %d\n", s[i].a, s[i].b, s[i].c, s[i].id);
}
cdq(1, n);
long long A = 1LL * n;
long long B = 1LL * (n - 1);
long long C = 0;
if(A % 2 == 0) A = A / 2;
else B = B / 2;
for(int i = 1; i <= n; i ++) {
C = C + 1LL * f[i];
}
printf("%lld\n", A * B - C); return 0;
}

牛客练习赛2 A - Contest的更多相关文章

  1. 牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B

    牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 https://ac.nowcoder.com/acm/contest/218/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...

  2. 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A

    牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...

  3. 最小生成树--牛客练习赛43-C

    牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 ​ 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...

  4. 牛客练习赛51 **E-数列** (二分,贪心,构造)

    牛客练习赛51 E-数列 链接:https://ac.nowcoder.com/acm/contest/1083/E来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...

  5. 牛客练习赛50 D tokitsukaze and Event (最短路,思维)

    牛客练习赛50 D tokitsukaze and Event 链接:https://ac.nowcoder.com/acm/contest/1080/D来源:牛客网 时间限制:C/C++ 1秒,其他 ...

  6. 牛客练习赛48 C 小w的糖果 (数学,多项式,差分)

    牛客练习赛48 C 小w的糖果 (数学,多项式) 链接:https://ac.nowcoder.com/acm/contest/923/C来源:牛客网 题目描述 小w和他的两位队友teito.toki ...

  7. 牛客练习赛48 A· 小w的a+b问题 (贪心,构造,二进制)

    牛客练习赛48 A· 小w的a+b问题 链接:https://ac.nowcoder.com/acm/contest/923/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C ...

  8. 牛客练习赛42 C 出题的诀窍 (贡献,卡常)

    牛客练习赛42 C 出题的诀窍 链接:https://ac.nowcoder.com/acm/contest/393/C来源:牛客网 题目描述 给定m个长为n的序列a1,a2,-,ama_1 , a_ ...

  9. 牛客练习赛53 D 德育分博弈政治课 (思维建图,最大流)

    牛客练习赛53 D德育分博弈政治课 链接:https://ac.nowcoder.com/acm/contest/1114/D来源:牛客网 题目描述 德育分学长最近玩起了骰子.他玩的骰子不同,他的骰子 ...

随机推荐

  1. e.getMessage() e.printStackTrace() 和e.printStackTrace() 小结

    1 e.getMessage() ;    只会获得异常的名称.比如说NullPoint 空指针,就告诉你说是空指针 2.e.toString():  获得异常种类和错误信息 3.e.printSta ...

  2. Redis学习四:解析配置文件 redis.conf

    一.它在哪 地址: 思考:为什么要将它拷贝出来单独执行? 二.Units单位 1 配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit 2 对大小写不敏感 三.INCLUDES包 ...

  3. 不忘初心,方得始终——NOIP2016前的感悟

    不忘初心,方得始终 袛园精舍钟声响,奏诸世事本无常.沙罗双树失花色,盛者转衰如沧桑.骄者难久,恰如春宵一梦.猛者遂灭,好似风前之尘.    ——题记   人生中最令人恐惧的恐怕就是选择了,现在的你拥有 ...

  4. SQL Server DB Link相关

    若想通过DBlink 清空表或执行存储过程,可以通过这种方式 Insert into table select * from table时,Pull 方式比Push方式快很多

  5. centos6.4下配置nginx服务器更改根目录

    安装完nginx服务器后发现nginx的根目录在/usr/share/nginx/html/下,但是对于部署文件来说,在该目录下是不太习惯的,我就尝试着更改nginx访问的根目录 #  vi /etc ...

  6. package.json安装依赖的箭头?

  7. P1879 [USACO06NOV]玉米田Corn Fields (状压dp入门)

    题目链接: https://www.luogu.org/problemnew/show/P1879 具体思路: 我们可以先把所有合法的情况枚举出来,然后对第一行判断有多少种情况满足,然后对于剩下的行数 ...

  8. Oracle 11.2.0.4在线(Online mode)打补丁14084247解决WRH$_ACTIVE_SESSION_HISTORY不会自动切割的问题

      安装了Oracle Database Release 11.2.0.4之后,发现WRH$_ACTIVE_SESSION_HISTORY始终不会自动分割删除,   后来才发现需要应用补丁:14084 ...

  9. aarch64_l4

    livestreamer-1.12.2-7.fc26.noarch.rpm 2017-02-11 17:38 537K fedora Mirroring Project lizardfs-adm-3. ...

  10. git clone直接提交用户名和密码

    git使用用户名密码clone的方式: git clone http://username:password@remote 例如:我的用户名是abc@qq.com,密码是abc123456,git地址 ...