文章目录

  • 1.大赛题目
  • 2.代码实例1
  • 3.运行结果
  • 4.代码实例2
  • 5.详细讲解

1.大赛题目

给定三个整数数组
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

资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
不要使用package语句。不要使用jdk1.7及以上版本的特性。
主类的名字必须是:Main,否则按无效代码处理。

2.代码实例1

public class Lanqiaoninthsix {static Scanner sc = new Scanner(System.in);// 输入第一行Nstatic int N = sc.nextInt();static int sum = 0;// 定义三个数组A、B、Cstatic int A[] = new int[N];static int B[] = new int[N];static int C[] = new int[N];public static void main(String[] args) {input();f();System.out.println(sum);}public static void input() {// for循环输入三个数组if(N>=1 && N<=100000) {          //对于100%的数据,1 <= N <= 100000 0 <= Ai, Bi, Ci <= 100000 for(int i=0;i<N;i++) {A[i] = sc.nextInt();}for(int i=0;i<N;i++) {B[i] = sc.nextInt();}for(int i=0;i<N;i++) {C[i] = sc.nextInt();}}}public static void f() {for(int i=0;i<N;i++) {for(int j=0;j<N;j++) {for(int k=0;k<N;k++) {if(A[i]<B[j] && B[j]<C[k] ) {   //Ai < Bj < Ck  sum++;}}}}}
}

3.运行结果

3
1 1 1
2 2 2
3 3 3
27

以上这种暴力的方法可能会超时,下面看另外一种相似的解法

4.代码实例2

public class test {public static void main(String args[]) {Scanner scanner = new Scanner(System.in);Integer N = scanner.nextInt();//定义三个数组int A[] = new int[N];int B[] = new int[N];int C[] = new int[N];//初始化三个数组for(int i = 0;i<N;i++) {A[i] = scanner.nextInt();}for(int i = 0;i<N;i++) {B[i] = scanner.nextInt();}for(int i = 0;i<N;i++) {C[i] = scanner.nextInt();}//定义一个计数器,记录最终的结果数sum@SuppressWarnings("unused")//first是第二行数据中的第一个数比第一行数据中的数大的个数,two是第三行数据中的数比第一行数据中的第一个数大的个数,以此类推int sum = 0,first = 0,two = 0;//判断for(int i = 0;i<N;i++) {for(int j = 0;j<N;j++) {if(B[j]>A[i]) {first++;}System.out.println("first:"+first);}for(int k = 0;k<N;k++){if(C[k]>B[i]) {two++;}System.out.println("two:"+two);}sum += first*two;//每一轮循环之后都要将first、two重设为0first = 0;two = 0;}System.out.println(sum);//申请了资源要记得归还scanner.close();}
}

5.详细讲解

因为我们把第一行数据放到A数组里面了
把第二行数据放到B数组里面了
把第三行数据放到C数组里面了

所以

第一次最外层循环:

比较第二行数据中的第一个数2跟第一行数据中的所有的数比较
如果比其大的,则加1,所以第一次比较的结果为3。
同理,第三行数据中的所有的数跟第二行的第一个数进行比较,如果比其大
的,则加1,所以第二次比较的结果也为3。两个值相乘3*3=9;这是第一次循环的值

第二次最外层循环:

比较第二行数据中的第二个数2跟第一行数据中的所有的数比较
如果比其大的,则加1,所以第一次比较的结果为3。
同理,第三行数据中的所有的数跟第二行的第二个数进行比较,如果比其大
的,则加1,所以第二次比较的结果也为3。两个值相乘3*3=9;这是第二次循环的值

第三次最外层循环:

比较第二行数据中的第三个数2跟第一行数据中的所有的数比较
如果比其大的,则加1,所以第一次比较的结果为3。
同理,第三行数据中的所有的数跟第二行的第三个数进行比较,如果比其大
的,则加1,所以第二次比较的结果也为3。两个值相乘3*3=9;这是第三次循环的值

最终结果9+9+9=27,图解如下图所示:

第九届蓝桥杯java B组—第六题递增三元组(详细介绍)相关推荐

  1. 第九届蓝桥杯java B组—第三题复数幂(详细介绍)

    文章目录 1.题目如下 2.代码实例 3.结果如下 4.代码讲解 5.详细讲解文件输出 1.题目如下 设i为虚数单位.对于任意正整数n,(2+3i)^n 的实部和虚部都是整数. 求(2+3i)^123 ...

  2. 第九届蓝桥杯 Java B组 第三题 复数幂 (详解)

    蓝桥杯 加油 (ง •_•)ง 标题:复数幂 设i为虚数单位.对于任意正整数n,(2+3i)^n 的实部和虚部都是整数. 求 (2+3i)^123456 等于多少? 即(2+3i)的123456次幂, ...

  3. 2015年 第06届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  4. 2016年 第07届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  5. 2017年 第08届 蓝桥杯 Java B组 决赛真题详解及小结

    ​​​​​蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 ...

  6. 2018年 第09届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  7. 2019年 第10届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  8. 2020年 第11届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  9. 2022年第十三届蓝桥杯Java B组第三题:字符统计

    2022年第十三届蓝桥杯Java B组第三题:字符统计

最新文章

  1. C++,那些可爱的小陷阱(三)
  2. php swool协程,swoole如何实现协程
  3. 12_Android中HttpClient的应用,doGet,doPost,doHttpClientGet,doHttpClient请求,另外借助第三方框架实现网络连接的应用,
  4. java string document_java - String 和 document 的相互转换总结
  5. 修改date格式 java_如何用Java更改日期格式?
  6. 深度学习之卷积神经网络 AlexNet
  7. 博士仅用2周投中了篇论文,戏耍157家期刊,被Science报道!
  8. Flask实现登录功能【附完整Demo】
  9. spring中定时器的使用
  10. 电脑太慢了最简单的办法怎么弄_电脑感染病毒的10种症状及简单处理办法 电脑中病毒的症状介绍...
  11. 30天敏捷结果(1):总体认识Getting Result敏捷方法
  12. c#物联网_「物联网架构」Apache-Kafka:物联网数据平台的基石
  13. 【预测模型-ELAMN预测】基于海鸥算法优化ELMAN神经网络实现数据回归预测
  14. 拉格朗日函数最优化问题
  15. 免费下载 [discuz!插件] 404页死链优化SEO V2.6
  16. idea选中多行的一列、一竖(不是多行的全部内容)
  17. springboot搭建redis时提示RedisCommandExecutionException: CLUSTERDOWN Hash slot not served解决办法
  18. mes系统多少钱,企业要不要上mes系统?
  19. netstat,ss,nc ,wget,dig
  20. 将串口转换成TCP连接

热门文章

  1. 数字证书KeyTool使用(第二篇)
  2. IIS7下 301重定向 添加WWW
  3. Window7新建文件夹后刷新才显示的解决办法
  4. krylov子空间迭代法
  5. 利用 SIFT 实现图像拼接
  6. Matlab——数值计算——单个代数方程 代数方程组
  7. libuv 中文编程指南
  8. linux下shell编程print与printf的区别
  9. 图像增强——基于OpenCV的图像色彩增强
  10. 吴恩达深度学习课程deeplearning.ai课程作业:Class 2 Week 1 1.Initialization