解题思路:将 ai<bj<ck 拆成两个式子 bj>ai 和 bj<ck; 所以只需要枚举j即可再用二分找出边界
注意事项:
参考代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N =1e5+10;
int n,a[N],b[N],c[N],ans;
signed main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++) cin>>b[i];
for(int i=1;i<=n;i++) cin>>c[i];
sort(a+1,a+1+n,less<int>());
sort(b+1,b+1+n,less<int>());
sort(c+1,c+1+n,less<int>());
for(int j=1;j<=n;j++){
//找出 ai<bj bj<ck 枚举b即可
//找出小于 b[j]的最大下标
int indexa=lower_bound(a+1,a+n+1,b[j])-a-1;//减1去除等于
//找出大于b[j]的最小下标
int indexc=upper_bound(c+1,c+n+1,b[j])-c;
indexc = n-indexc+1;
ans+=(indexa*indexc);
}
cout<<ans<<endl;
return 0;
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:968 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:671 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:449 |
WU-输出正反三角形 (C++代码)浏览:1019 |
C语言考试练习题_保留字母 (C语言代码)浏览:712 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:834 |
星期判断机 (C语言代码)浏览:859 |
1071题解浏览:493 |
Tom数 (C语言代码)浏览:555 |
输出九九乘法表 (C语言代码)浏览:1048 |