当前位置: 首页 > article >正文

第十四届蓝桥杯三月真题刷题训练——第 11 天

目录

第 1 题:卡片

题目描述

运行限制

第 2 题:路径_dp+gcd

运行限制

第 3 题:字符统计

问题描述

输入格式

输出格式

样例输入

样例输出

评测用例规模与约定

运行限制

第 4 题:费用报销  


第 1 题:卡片

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。

小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。

小蓝想知道自己能从 1 拼到多少。

例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10,

但是拼 11 时卡片 1 已经只有一张了,不够拼出11。

现在小蓝手里有 0 到 9 的卡片各 2021 张,共 20210 张,请问小蓝可以从 1 拼到多少?

提示:建议使用计算机编程解决问题。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

代码:

package 第十四届蓝桥杯三月真题刷题训练.day11;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.Arrays;

/**
 * @author yx
 * @date 2023-03-14 8:28
 */
public class 卡片 {
    static PrintWriter out =new PrintWriter(System.out);
    static BufferedReader ins=new BufferedReader(new InputStreamReader(System.in));
    static StreamTokenizer in=new StreamTokenizer(ins);
    /**
     * 输入
     * in.nextToken()
     * int a= (int)in.nval;
     *
     * 输出
     * out.print();
     * out.flush();
     */
    static int[] nums=new int[10];
    static int i;
    public static void main(String[] args) {
        i=0;
        while (true){
            i++;
            char[] num=(i+"").toCharArray();
            int length=num.length;
            for (int j = 0; j < length; j++) {
                nums[num[j] - '0']++;
                if(nums[num[j]-'0']==2021&&j==length-1) {
                    out.println(i);
                    out.flush();
                    return;
                }else if(nums[num[j]-'0']==2021&&j!=length-1){
                    out.println(i-1);
                    out.flush();
                    return;
                }
            }
        }
    }
}

第 2 题:路径_dp+gcd

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图 中的最短路径。

小蓝的图由 2021 个结点组成,依次编号 1 至 2021。

对于两个不同的结点 a, b,如果 a 和 b 的差的绝对值大于 21,则两个结点 之间没有边相连;如果 a 和 b 的差的绝对值小于等于 21,则两个点之间有一条 长度为 a 和 b 的最小公倍数的无向边相连。

例如:结点 1 和结点 23 之间没有边相连;结点 3 和结点 24 之间有一条无 向边,长度为 24;结点 15 和结点 25 之间有一条无向边,长度为 75。

请计算,结点 1 和结点 2021 之间的最短路径长度是多少。

提示:建议使用计算机编程解决问题。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

代码:

package 第十四届蓝桥杯三月真题刷题训练.day11;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StreamTokenizer;

/**
 * @author yx
 * @date 2023-03-14 8:54
 */
public class 路径_01背包_gcd {
    static PrintWriter out = new PrintWriter(System.out);
    static BufferedReader ins = new BufferedReader(new InputStreamReader(System.in));
    static StreamTokenizer in = new StreamTokenizer(ins);

    /**
     * 输入
     * in.nextToken()
     * int a= (int)in.nval;
     *
     * 输出
     * out.print();
     * out.flush();
     */
    public static void main(String[] args) {
        int[] nums = new int[2022];
        for (int i = 1; i <= 2021; i++) {
            //这个地方也比较细节,到i+21时为最大更新区间
            for (int j = i+1; j <=i+21 ; j++) {
                if (j == 2022) {
                    //当遍历到2022时,说明在此循环内已经完成了2021之前的更新
                    //2022超出最大范围2021,所以退出当前循环
                    //继续下一个i+1,更新从i+1~2021的最小路径
                    break;
                }
                //i*j的最小公倍数等于(i*j)/最大公约数
                int temp = gcd(i, j);
                if (nums[j] == 0) {//初始化
                    nums[j] = (int)(i * j / temp) + nums[i];
                } else {//进行最优化迭代,选出最短路径
                    nums[j] = Math.min(nums[j], i * j / temp + nums[i]);
                }
            }
        }
        out.println(nums[2021]);
        out.flush();
    }

    static int gcd(int m, int n) {
        return n != 0 ? gcd(n, m % n) : m;
    }
}

第 3 题:字符统计

问题描述

给定一个只包含大写字母的字符串 S, 请你输出其中出现次数最多的字符。如果有多个字母均出现了最多次, 按字母表顺序依次输出所有这些字母。

输入格式

一个只包含大写字母的字符串 S.

输出格式

若干个大写字母,代表答案。

样例输入

BABBACAC

样例输出

AB

评测用例规模与约定

对于 100%的评测用例, 1≤∣S∣≤10^6.

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 512M

代码:

package 第十四届蓝桥杯三月真题刷题训练.day11;

import java.io.*;
import java.util.Arrays;
import java.util.HashMap;

/**
 * @author yx
 * @date 2023-03-14 9:53
 */
public class 字符统计 {
    static PrintWriter out =new PrintWriter(System.out);
    static BufferedReader ins=new BufferedReader(new InputStreamReader(System.in));
    static StreamTokenizer in=new StreamTokenizer(ins);
    /**
     * 输入
     * in.nextToken()
     * int a= (int)in.nval;
     *
     * 输出
     * out.print();
     * out.flush();
     */
    public static void main(String[] args) throws IOException {
        char[] strings=ins.readLine().toCharArray();
        int length1=strings.length;
        int max=0;
        int[] nums1=new int[26];
        for (int i = 0; i < length1; i++) {
            nums1[strings[i]-'A']++;
        }
        int length2=nums1.length;
        int[]nums2= Arrays.copyOf(nums1,nums1.length);
        Arrays.sort(nums1);
        max=nums1[25];
        for (int i = 0; i < length2; i++) {
            if(nums2[i]==max){
                System.out.print((char)('A'+i));
            }
        }
    }
}

第 4 题:费用报销  

晚上补题


http://www.kler.cn/a/93.html

相关文章:

  • 【C++习题】20. 两个数组的交集
  • Vscode辅助编码AI神器continue插件
  • MacBook Linux 树莓派raspberrypi安装Golang环境
  • 关于Mac使用VSCode连接虚拟机
  • [Linux]redis5.0.x升级至7.x完整操作流程
  • 119.使用AI Agent解决问题:Jenkins build Pipeline时,提示npm ERR! errno FETCH_ERROR
  • vue基础面试题day(2)
  • 我,30岁程序员被裁了,千万别干全栈
  • 28岁小公司程序员,无车无房不敢结婚,要不要转行?
  • LeetCode - 198 打家劫舍
  • Linux常用命令
  • Java为什么只能单继承???
  • C++模拟实现红黑树
  • 蓝桥杯刷题第七天
  • Vulnhub靶场----3、DC-3.2
  • 人体姿态识别
  • 如何用Python求解微分方程组
  • 三天吃透MySQL面试八股文
  • 中职网络空间安全windows渗透
  • 【网络安全必备知识】本地提权漏洞分析
  • 第十六章 Java为什么使用序列化
  • 【java】 java开发中 常遇到的各种难点 思路方案
  • 码农饭碗不保——ChatGPT正在取代Coder
  • 扫地机器人(蓝桥杯C/C++)
  • 成本降低90%,OpenAI正式开放ChαtGΡΤ
  • 代码看不懂?ChatGPT 帮你解释,详细到爆!