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

蓝桥杯--冲刺题单--随时更新

冲刺题单

感谢up主溶金落梧桐(uid:40733116),我是看了他的视频后总结的。

简单模拟(循环数组日期进制)

1.蓝桥19723–分布式队列

package datasimulation;

import java.util.Scanner;

public class Test3 {
    //计算数组中最小值
    public static int getMin(int[] arr){
        int min = arr[0];//最好设为数组中的某个值
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] < min){
                min = arr[i];
            }
        }
        return min;
    }
    //主逻辑函数
    public static void solve(){
        Scanner sc = new Scanner(System.in);
        //输入N
        int N = sc.nextInt();
        //创建一个长度为N的数组,数组元素表示的是每个节点数组的长度
        int[] arr = new int[N];
        //输入?行数据
        while(sc.hasNext()){
            String op = sc.next();
            if(op.equals("add")){
                int opNum = sc.nextInt();
                //主节点数组长度加1
                arr[0]++;
            } else if (op.equals("sync")) {
                int opNum = sc.nextInt();
                //副节点数组长度加1
                //!!!特别注意!!!
                副队列同步主队列,如果在执行这次操作时副队列已经是跟主队列相同了,
                // 此时再加1并不合理,最高就是跟主队列相同
                //其实题目的用例有偷偷暗示
                arr[opNum] = Math.min(arr[opNum] + 1,arr[0]);
            }else{
                //输出可见数
                //其实就是输出arr数组中的最小值--各个节点数组的长度最小值
                System.out.println(getMin(arr));
            }
        }

    }
    public static void main(String[] args) {
        solve();
    }
}

注意:
1.使用一个数组来描述,数组的元素表示的是每个节点数组的长度,可见数其实就是这个数组中最小的元素。
2.要特别注意观察题目给的样例,其中可能暗藏玄机。
最开始我只通过50%,后来才发现给的用例可能会重复,如果遇到sync只是一味加加,那么副节点数组的长度就会超过主节点,这就不对了。
3.学到了一个sc.hasNext()的使用。因为本题不知道输入的操作个数。
4.特别注意数据的输入格式。

2.蓝桥19709–好数

package datasimulation;

import java.util.Scanner;

public class Test4 {
    public static boolean check(int n){
        int count = 1;//表示奇偶数位
        int jicount = 0;
        int oucount = 0;
        while(n != 0){
            int t = n % 10;
            n = n / 10;
            if(count % 2 == 0 && t % 2 == 0){
                oucount++;
            }
            if(count % 2 != 0 && t % 2 != 0){
                jicount++;
            }
            count++;//下一位
        }
        //注意上面循环count多加了1
        if(jicount + oucount + 1 == count)  return true;
        else return false;
    }
    //主逻辑函数
    public static void solve(){
        Scanner sc = new Scanner(System.in);
        //输入N
        int N = sc.nextInt();
        int count = 0;//记录好数
        for (int i = 1; i <= N; i++) {
            if(check(i)) count++;
        }
        System.out.println(count);
    }
    public static void main(String[] args) {
        solve();
    }
}

//判断好数
    //奇数位不能是偶数,偶数位不能是奇数
    public static boolean check(int n){
        int cnt = 1;//位数计数器
        while(n != 0){
            int t = n % 10;
            if(cnt % 2 != 0){
                //奇数位不能偶数
                if(t % 2 == 0) return false;
            }
            if(cnt % 2 == 0){
                //偶数位不能是奇数
                if(t % 2 != 0) return false;
            }
            cnt++;//下一位数
            n = n / 10;
        }
        return true;//都结束了返回true
    }
学到的知识点:
本题使用暴力来做,额我就只想到对于奇数位是奇数的加1,偶数位是偶数的加一,因此要循环全部,效率较低。而且还有一点就是最好的count多加了1。
老师的解法就是奇数位偶数返回错,偶数位奇数返回错。这样提高了效率,也不需要注意太多。

前缀和与差分

1.蓝桥18437–一维前缀和(模板

import java.util.Scanner;

public class Main {
    public static void solve(){
        Scanner sc = new Scanner(System.in);
        //输入n,q
        int n = sc.nextInt();
        int q = sc.nextInt();
        //定义数组
        int[] a = new int[n + 1];
        //输入ai,顺便计算前缀和
        for (int i = 1; i <= n; i++) {
            a[i] = sc.nextInt();
            a[i] = a[i - 1] + a[i];
         }
        //q次查询
        for (int i = 0; i < q; i++) {
            int l = sc.nextInt();
            int r = sc.nextInt();
            //差分?
            System.out.println(a[r] - a[l - 1]);
        }
    }
    public static void main(String[] args) {
        solve();
    }
}


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

相关文章:

  • 物联网平台与边缘计算网关的深度结合应用
  • Spring Boot 集成 Kafka 消息发送方案
  • ‌C# I/O 核心用法
  • 【工程实践/大批量文件处理】文件排序
  • 笛卡尔轨迹规划之齐次变换矩阵与欧拉角、四元数的转化
  • 数据类设计_图片类设计之7_矩阵图形类设计更新_实战之页面简单设计(前端架构)
  • VLLM专题(十九)—兼容 OpenAI 的服务器
  • Matplotlib 柱形图
  • 波场trx质押能量租赁平台开发
  • 通信网络安全防护风险评估报告怎么写?范文模版分享
  • 剑指 Offer II 113. 课程顺序
  • NPN三极管基极接稳压管的作用
  • 识别并脱敏上传到deepseek/chatgpt的文本文件中的护照信息
  • companion object和object 从kotlin转java分析
  • Python+selenium,轻松搭建Web自动化测试框架
  • 稳定运行的以PostgreSQL数据库为数据源和目标的ETL性能变差时提高性能方法和步骤
  • 【MyDB】7-客户端服务端通信之1-服务端客户端通信实现前言
  • deque
  • sql批量修改字段某一指定部分+修改重复编号
  • java TCP UDP 客户端访问例子和对比差异