卡片+递增三元组——蓝桥杯(JAVA解法)

简介: 卡片+递增三元组——蓝桥杯(JAVA解法)

 1、卡片

题目链接:

问题描述

小蓝有 k 种卡片, 一个班有 n 位同学, 小蓝给每位同学发了两张卡片, 一 位同学的两张卡片可能是同一种, 也可能是不同种, 两张卡片没有顺序。没有 两位同学的卡片都是一样的。

给定 n, 请问小蓝的卡片至少有多少种?

输入格式

输入一行包含一个正整数表示 n 。

输出格式

输出一行包含一个整数, 表示答案。

样例输入

6

image.gif

样例输出

3

image.gif

样例说明

小朋友们手中的卡片可能是: (1,1),(1,2),(1,3),(2,2),(2,3),(3,3) 。

代码:

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int p =sc.nextInt();
    int n=0;
    for (int i = 1; i < Integer.MAX_VALUE; i++){
        for(int j = 1; j <=i; j++){
           n++;
        if(n>=p){
            System.out.println(i);
            return;
        }  
    } 
  }
}
}

image.gif

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。

    其中,1≤N≤105,0≤Ai,Bi,Ci≤105。

    输出描述

    输出一个整数表示答案。

    输入输出样例

    示例

    输入

    3
    1 1 1
    2 2 2
    3 3 3

    image.gif

    输出

    27

    image.gif

    代码:

    import java.util.Arrays;
    import java.util.Scanner;
    // 1:无需package
    // 2: 类名必须Main, 不可修改
    public class 递增三元组 {
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            //在此输入您的代码...
            int n = scan.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]=scan.nextInt();
            }
            for (int i = 0; i <n; i++) {
                b[i]=scan.nextInt();
            }
            for (int i = 0; i <n; i++) {
                c[i]=scan.nextInt();
            }
            long ans=0;
            Arrays.sort(a);
            Arrays.sort(b);
            Arrays.sort(c);
            //没要求列出所有的i,j,k ,不用担心i,j,k排序后顺序乱了,所以可以排序,节约时间
            int p = 0; //a小于b的指针
            int q = 0;//c大于b的指针
            //三个排好序的数组
            //对b从左往又开始扫描,随着b的增大,a小于b的区域(个数),和c小于等于b的区域(个数) 会越来越大,则c大于b的区域(个数)会越来越小
            for (int i = 0; i < n ; i++) {
                while(p<n&&a[p]<b[i])
                    p++;
                while(q<n&&c[q]<=b[i])
                    q++;
                ans+=((long)p*(n-q));
            }
            System.out.println(ans);
            scan.close();
        }
    }

    image.gif


    相关文章
    |
    1月前
    |
    人工智能 算法 Java
    第十三届蓝桥杯B组Java(试题C:字符统计)
    第十三届蓝桥杯B组Java(试题C:字符统计)
    60 0
    |
    1月前
    |
    Java
    FEB选择(蓝桥杯JAVA C组)
    FEB选择(蓝桥杯JAVA C组)
    |
    16天前
    |
    Java
    P9242 [蓝桥杯 2023 省 B] 接龙数列JAVA,边权为1的最短路问题,洛谷P9242 [蓝桥杯 2023 省 B] 接龙数列​编辑力扣1926.迷宫离入口最近的出口力扣433.
    P9242 [蓝桥杯 2023 省 B] 接龙数列JAVA,边权为1的最短路问题,洛谷P9242 [蓝桥杯 2023 省 B] 接龙数列​编辑力扣1926.迷宫离入口最近的出口力扣433.
    |
    1月前
    |
    Java 数据安全/隐私保护 C++
    第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-193 Password Suspects(C++&Java)
    第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-193 Password Suspects(C++&Java)
    23 1
    |
    1月前
    |
    Java
    2014年蓝桥杯Java C组——猜年龄
    2014年蓝桥杯Java C组——猜年龄
    29 0
    2014年蓝桥杯Java C组——猜年龄
    |
    1月前
    |
    Java C++ Python
    第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-456 求链表各节点的平均值(C++解法)
    第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-456 求链表各节点的平均值(C++解法)
    34 0
    |
    1月前
    |
    机器学习/深度学习 Java
    第十四届蓝桥杯集训——练习解题阶段(无序阶段)-Java全排列公式
    第十四届蓝桥杯集训——练习解题阶段(无序阶段)-Java全排列公式
    45 0
    |
    1月前
    |
    算法 Java
    蓝桥杯算法题——题解Java版本——切面条
    蓝桥杯算法题——题解Java版本——切面条
    47 0
    |
    1月前
    |
    Java 数据安全/隐私保护
    6-4 字符串加密(Java解法,两种网上的类型题)
    6-4 字符串加密(Java解法,两种网上的类型题)
    29 0
    |
    1月前
    |
    算法 Java 测试技术
    蓝桥杯-02-蓝桥杯Java组考点与14届真题
    蓝桥杯-02-蓝桥杯Java组考点与14届真题