• Java实现第九届蓝桥杯递增三元组


    题目6、递增三元组

    题目描述
    给定三个整数数组
    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,否则按无效代码处理。

    import java.util.Arrays;
    import java.util.Scanner;
     
    public class t6 {
    	
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int n = sc.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] = sc.nextInt();
    		for (int i = 0; i < n; i++) 
    			B[i] = sc.nextInt();
    		for (int i = 0; i < n; i++) 
    			C[i] = sc.nextInt();
    		Arrays.sort(A);
    		Arrays.sort(B);
    		Arrays.sort(C);
    		int[] l = new int[n];
    		int[] r = new int[n];
    		long sum = 0;
    		for (int i = 0; i < n; i++) {
    			for (int j = 0; j < n; j++) {
    				if (B[j] > A[i]) {
    					l[i] = n - j;
    					break;
    				}
    			}
    			if (l[i] != 0)
    				for (int j = 0; j < n; j++) {
    					if (C[j] > B[i]) {
    						r[i] = n - j;
    						sum += l[i] * r[i];
    						break;
    					}
    				}
    		}
    		System.out.println(sum);
     		
    	}
    }
    
  • 相关阅读:
    对接天猫精灵X1 (https 的申请)
    第二个 SignalR,可以私聊的聊天室
    抽象工厂模式
    装饰者模式
    Signal 第一个简单Demo
    策略模式
    完美删除vector的内容与释放内存
    VC++的窗口句柄和窗口ID
    如何让模态对话画框达到非模态对话框 焦点无限制效果
    指针初始化为NULL的作用
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13077558.html
Copyright © 2020-2023  润新知