博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第九届蓝桥杯 第六题:递增三元数组 二分
阅读量:3905 次
发布时间:2019-05-23

本文共 714 字,大约阅读时间需要 2 分钟。

标题:递增三元组

给定三个整数数组

A = [A1, A2, ... AN],
B = [B1, B2, ... BN],
C = [C1, C2, ... CN],
请你统计有多少个三元组(i, j, k) 满足:
1. 1 <= i, j, k <= N  
2. Ai < Bj < Ck  

【输入格式】

第一行包含一个整数N。
第二行包含N个整数A1, A2, ... AN。
第三行包含N个整数B1, B2, ... BN。
第四行包含N个整数C1, C2, ... CN。

对于30%的数据,1 <= N <= 100  

对于60%的数据,1 <= N <= 1000
对于100%的数据,1 <= N <= 100000 0 <= Ai, Bi, Ci <= 100000

【输出格式】

一个整数表示答案

【样例输入】

3
1 1 1
2 2 2
3 3 3

【样例输出】

27

将a和c序列排序。

遍历b序列,二分查找a中比b[i]小的元素,c中比b[i]大的元素。

代码如下:

#include 
#include
#include
#include
using namespace std;typedef long long ll;const int maxn=1e5+5;int n;int num[3][maxn];int sum[3][maxn];int a[3][maxn];int main(){ ll ans=0; scanf("%d",&n); for (int i=0;i<3;i++) { for (int j=0;j

 

转载地址:http://ckoen.baihongyu.com/

你可能感兴趣的文章
345. 反转字符串中的元音字母
查看>>
67. 二进制求和
查看>>
125. 验证回文串
查看>>
168. Excel表列名称
查看>>
400. 第N个数字
查看>>
209. 长度最小的子数组
查看>>
145. 二叉树的后序遍历
查看>>
2. 两数相加
查看>>
3. 无重复字符的最长子串
查看>>
5. 最长回文子串
查看>>
4. 两个排序数组的中位数
查看>>
10. 正则表达式匹配
查看>>
23. 合并K个元素的有序链表
查看>>
32. 最长有效括号
查看>>
6. Z字形转换
查看>>
8. 字符串转整数(atoi)
查看>>
12. 整数转罗马数字
查看>>
15. 三数之和
查看>>
16. 最接近的三数之和
查看>>
18. 四数之和
查看>>