一个公司可以有两个网站吗,亚洲杯中国菲律宾,wordpress 中英文双语,信息化管理系统软件题目传送门
主要思路#xff1a;
暴力会tle n的3次方了然后 二分可以找中间然后去二分枚举两边 最后结果 ansa小于它的数*c大于它的数 注意要判断是否符合条件 即如果a的小于它的数还大于它就不成立 或者c的数小于它也不成立结果 要注意转long long ans(long long)tp1*tp2; …题目传送门
主要思路
暴力会tle n的3次方了然后 二分可以找中间然后去二分枚举两边 最后结果 ansa小于它的数*c大于它的数 注意要判断是否符合条件 即如果a的小于它的数还大于它就不成立 或者c的数小于它也不成立结果 要注意转long long ans(long long)tp1*tp2; int-longlong
#includebits/stdc.h
using namespace std;
int n;
int a[100009],b[100009],c[100009];
//找到第一个大于该数字的数
int get_max(int *num,int x){int l1;int rn; int mid0;while(lr){mid(lr)/2;if(num[mid]x) rmid;else lmid1;}return l;
}
// 得到第一个小于它的数
int get_min(int *num,int x)
{int l1;int rn; int mid0;while(lr){mid(lr1)/2;if(num[mid]x) lmid;else rmid-1;}return l;
}
int main(){cinn;for(int i1;in;i){cina[i];}for(int i1;in;i){cinb[i];}for(int i1;in;i){cinc[i];}sort(a1,a1n);sort(c1,c1n);long long ans0;for(int i1;in;i){// coutget_max(c,b[i])endl;// coutget_min(a,b[i])endl;// if(b[i]a[1]||b[i]c[n]) continue;int tp1n-get_max(c,b[i])1;int tp2get_min(a,b[i]);if(c[get_max(c,b[i])]b[i]||a[get_min(a,b[i])]b[i]) continue;ans(long long)tp1*tp2;}coutansendl;return 0;
}
// #include iostream
// #include cstdio
// #include algorithm
// using namespace std;// typedef long long LL;
// const int N 1e510;
// int num[3][N];// int main() {
// int n;
// scanf(%d, n);
// for(int i 0; i 3; i)
// for(int j 1; j n; j)
// scanf(%d, num[i][j]);
// // for(int i 0; i 3; i)
// sort(num[0]1, num[0]n1);
// sort(num[2]1, num[2]n1);
// LL ans 0;
// //枚举B寻找A满足的个数以及C满足的个数相乘
// for(int i 1; i n; i) {
// int key num[1][i];
// //A中二分查找第一个小于key的数的下标
// int pos1 lower_bound(num[0]1, num[0]n1, key)-num[0]-1;
// //C中二分查找第一个大于key的数的下标
// int pos2 upper_bound(num[2]1, num[2]n1, key)-num[2];
// if(pos1 1 pos2 n) {
// ans (LL)pos1*(n-pos21);
// }
// }
// coutansendl;
// return 0;
// }