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

河南农业大学2023春蓝桥杯赛前训练第一场

A 滑板上楼梯

贪心

要求最少次数,尽量多跳三阶的,不能连续跳三阶,三阶后面一定要跟着一个一阶,相当于直接跳四阶
每次跳四阶都是两步(3、1),如果 % 4 之后,正好剩下 3 ,则直接跳一个三阶,否则要一阶一阶跳

import java.util.Scanner;public class Main {private static int N;private static long n;public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextLong();long ans = 0;ans += n / 4;ans *= 2;n %= 4;if (n == 3) ans += 1;else ans += n;System.out.println(ans);}
}

B 牛牛的加法

字符串模拟加法

两个字符串分别存储两个数字,因为没有进位,直接从最长的字符串的最后,倒序处理即可,每次取和的模

/*** @author :Changersh* @date : 2023/1/14 15:44*/import java.io.*;
import java.util.*;
import java.lang.*;public class Main {private static int N = (int) 2e5 + 10;private static String s;private static int[] a = new int[N], b = new int[N];public static void main(String[] args) {s = sc.next();int x = s.length();for (int i = 0, j = x - 1; j >= 0; j--, i++) {a[i] = s.charAt(j) - '0';}s = sc.next();int y = s.length();for (int i = 0, j = y - 1; j >= 0; j--, i++) {b[i] = s.charAt(j) - '0';}int len = Math.max(x, y);for (int i = 0; i < len; i++) {a[i] = (a[i] + b[i]) % 10;}while (len > 0 && a[len - 1] == 0) len--;for (int i = len - 1; i >= 0; i--) out.print(a[i]);if (len == 0) out.println(0);out.close();}
}

C 石子合并

贪心

两堆合并,得到的价值是两堆价值的和,并且拿走少的那堆,求最大价值
把所有的都和最大的那个合并即可
注意:会溢出,要用 long

import java.util.*;public class Main {private static int N = (int) 2e5 + 10, n, m, k;private static int[] a;public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextInt();a = new int[n];for (int i = 0; i < n; i++) a[i] = sc.nextInt();Arrays.sort(a);long ans = 0, t = a[n - 1];for (int i = 0; i < n - 1; i++) ans += (t + a[i]);System.out.println(ans);}
}

D 黑白边

kruskal + 并查集

用 0 代表黑边,我们就按这个排序,优先选择所有的黑边,然后按大小遍历所有的边。
如果该边的两个端点不在同一个集合,就用并查集到同一个集合,cnt++,cnt记录下该集合中的点的个数
ans记录白边个数,因为黑边0,白边1,直接ans+=edge.w 即可

import java.io.*;
import java.util.*;
import java.lang.*;class Edge {public Edge(int x, int y, int w) {this.x = x;this.y = y;this.w = w;}int x, y, w;
}public class Main {private static int N = (int) 2e5 + 10, n, m;private static int[] f = new int[N];private static Edge[] edges;public static void main(String[] args) {n = sc.nextInt();m = sc.nextInt();for (int i = 0; i <= n; i++) f[i] = i; // 初始化edges = new Edge[m];for (int i = 0; i < m; i++) {int x = sc.nextInt();int y = sc.nextInt();int w = sc.nextInt();edges[i] = new Edge(x, y, w);}Arrays.sort(edges, (a, b) -> (a.w - b.w));int cnt = 0, ans = 0;for (int i = 0; i < m; i++) {int fx = find(edges[i].x);int fy = find(edges[i].y);if (fx != fy) {ans += edges[i].w;cnt++;f[fx] = fy;}if (cnt == n - 1) break;}if (cnt == n - 1) out.println(ans);else out.println(-1);out.close();}private static int find(int x) {if (x != f[x]) f[x] = find(f[x]);return f[x];}
}

E 滑板比赛

贪心

将两个人的动作值分别从小到大排序,双指针就行,计算 牛牛大于牛妹的次数

import java.util.*;public class Main {private static int N = (int) 2e5 + 10, n, m;private static int[] a;private static int[] b;public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextInt();m = sc.nextInt();a = new int[n];b = new int[m];for (int i = 0; i < n; i++) a[i] = sc.nextInt(); // niufor (int i = 0; i < m; i++) b[i] = sc.nextInt(); // meiArrays.sort(a);Arrays.sort(b);int ans = 0, l = 0, r = 0;while (l < n && r < m) {if (a[l] > b[r]) {ans++;l++;r++;} else {l++;}}System.out.println(ans);}
}

F 最好的宝石

不会,线段树

G GCD

线性筛求素数

求长尾 k 的最小子集,每个长为 k 的子集中,都至少有一对 x y,gcd(x,y) > 1
k 肯定大于所有素数的个数,且要包括 1,统计素数的时候把 1 也统计上,得到ans
这个是所有最大公因数是 1 的,此时只要加上一个非素数,即可满足条件

结果 = ans + 1
如果ans > n 不满足,输出 -1
否则,输出 ans

import java.io.*;
import java.util.*;
import java.lang.*;public class Main {private static int N = (int) 1e5 + 10, n, tot;private static int[] p = new int[N];private static boolean[] vis = new boolean[N];/*** ans = 素数个数 + 1* ans > n 时 返回 -1*/public static void main(String[] args) {n = sc.nextInt();euler();  // 筛素数int ans = 1;for (int i = 1; i <= n; i++) {if (!vis[i]) ans++; // 素数 ++}if (ans > n) out.println(-1);else out.println(ans);out.close();}private static void euler() {for (int i = 2; i <= n; i++) {if (!vis[i]) p[tot++] = i;for (int j = 0; j < tot && p[j] <= n / i; j++) {vis[i * p[j]] = true;if (i % p[j] == 0) break;}}}
}

H 第k小

只存储最小的 k 个即可

import java.io.*;
import java.util.*;
import java.lang.*;public class Main {private static int N = (int) 1e5 + 10, n, m, k;private static PriorityQueue<Integer> pq = new PriorityQueue<>((a, b) -> (-(a - b)));/*** 发现只需要存储前 k 个即可* 倒序存储 只要 size > k 就一直 pop*/public static void main(String[] args) {n = sc.nextInt();m = sc.nextInt();k = sc.nextInt();for (int i = 0; i < n; i++) pq.add(sc.nextInt());int opt;while (m-- > 0) {while (pq.size() > k) pq.poll();opt = sc.nextInt();if (opt == 1) {int x = sc.nextInt();pq.add(x);}else {if (pq.size() == k) out.println(pq.peek());else out.println(-1);}}out.close();}
}

I 小游戏

dp

拿和不拿,两种状态
选择拿,只能拿前面不拿的
选择不拿,在前一个 拿和不拿之间,取一个 max

import java.io.*;
import java.util.*;
import java.lang.*;public class Main {private static int N = (int) 2e5 + 10, n, m;private static int[] a = new int[N];private static long[][] f = new long[N][2]; // 选 / 不选/***  dp,因为范围小,所以遍历整个范围,a[i] 存储的是 值为 i 的数的个数*/public static void main(String[] args) {n = sc.nextInt();for (int i = 0; i < n; i++) {int x = sc.nextInt();a[x]++;}for (int i = 1; i <= 200000; i++) {f[i][0] = Math.max(f[i - 1][0], f[i - 1][1]); // 不选,前一个可选可不选f[i][1] = f[i - 1][0] + a[i] * i;}out.println(Math.max(f[200000][0], f[200000][1]));;out.close();}
}

J 区间异或

二分

区间长度是 3000,可以预处理出来每个区间的异或和,放到b中
b[i] 存的是,区间长度为 i 的最大的异或和

因为要求异或和大于 x 的最小区间,则小区间的异或值如果大于大区间,则是覆盖了大区间的,我们两两取最大值,可以构造出来一个递增的序列,满足了二分答案的条件,对于每此询问,二分答案即可。

import java.io.*;
import java.util.*;
import java.lang.*;public class Main {private static int N = (int) 2e5 + 10, n, m;private static int[] a = new int[N];private static int[] b = new int[N];/*** 预处理:区间的异或和*/public static void main(String[] args) {n = sc.nextInt();m = sc.nextInt();for (int i = 1; i <= n; i++) a[i] = sc.nextInt();// 预处理for (int i = 1; i <= n; i++) {int ans = 0;for (int j = i; j <= n; j++) {ans ^= a[j];b[j - i + 1] = Math.max(b[j - i + 1], ans);}}// 取自己和前面的最大值,得到一个非递减的序列for (int i = 2; i <= n; i++) b[i] = Math.max(b[i], b[i - 1]);while (m-- > 0) {int x = sc.nextInt();if (x > b[n]) {out.println(-1);continue;}int l = 1, r = n;int ans = -1;while (l <= r) {int mid = l + ((r - l) >> 1);if (b[mid] >= x) {r = mid - 1;ans = mid;}else l = mid + 1;}out.println(ans); // 长度从 0 开始了}out.close();}
}

相关文章:

河南农业大学2023春蓝桥杯赛前训练第一场

A 滑板上楼梯 贪心 要求最少次数&#xff0c;尽量多跳三阶的&#xff0c;不能连续跳三阶&#xff0c;三阶后面一定要跟着一个一阶&#xff0c;相当于直接跳四阶 每次跳四阶都是两步&#xff08;3、1&#xff09;&#xff0c;如果 % 4 之后&#xff0c;正好剩下 3 &#xff0c…...

docker-dockerfile

1.常用保留字指令 FROM : 基础镜像MAINTAINER: 维护者姓名和邮箱RUN : Run ["可执行文件"&#xff0c;参数1]&#xff1b; Run [shell命令]EXPOSE: 暴露出的端口号WORKDIR: 登录后的位置USER: 执行用户,默认是rootENV: 构建过程的环境变量ADD: 将宿主机的文件拷贝到…...

【JavaEE】浅识进程

一、什么是进程1.1 操作系统学习进程之前首先要了解我们的操作系统&#xff08;OS&#xff09;&#xff0c;我们的操作系统实际上也是一款软件&#xff0c;属于系统软件的范畴&#xff0c;操作系统早期采用命令提示框与用户交互&#xff0c;我们启动某个软件&#xff0c;打开某…...

Java_Spring:1. Spring 概述

目录 1 spring 是什么 2 Spring 的发展历程 3 spring 的优势 4 spring 的体系结构 1 spring 是什么 Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架&#xff0c;以 IoC&#xff08;Inverse Of Control&#xff1a;反转控制&#xff09;和 AOP&#xff08;Aspec…...

使用Maven实现第一个Servlet程序

目录 前言&#xff1a; Maven 什么是Maven 创建Maven项目 Mevan目录介绍 Servlet程序 引入Servlet依赖 创建目录结构 编写代码 打包程序 部署程序 验证程序 idea集成Tomcat 下载Tomcat插件 配置Tomcat的路径 Smart Tomcat工作原理 小结&#xff1a; 前言&#…...

【MySQL】MySQL的优化(一)

目录 查看SQL执行频率 定位低效率执行SQL 定位低效率执行SQL-慢查询日志 定位低效率执行SQL-show processlist 查看SQL执行频率 MySQL 客户端连接成功后&#xff0c;通过 show [session|global] status 命令可以查看服务器状态信息。通 过查看状态信息可以查看对当…...

win kubernetes dashbord部署springboot服务

文章目录前言一、新建springboot工程二、制作镜像1.编写dockerfile2.使用阿里云镜像仓库3.使用dashbord部署服务总结前言 使用win版docker desktop安装的k8s&#xff0c;kubenetes dashbord。 一、新建springboot工程 就是简单一个接口。没什么说的 二、制作镜像 1.编写dock…...

Linux之进程终止

本节目录1.进程终止2.exit与_exit函数1.进程终止 进程终止时&#xff0c;操作系统做了什么&#xff1f; 释放进程中申请的相关内核数据结构和对应的数据和代码。本质就是释放系统资源。 进程终止的常见方式 a.代码跑完&#xff0c;结果正确 b.代码跑完&#xff0c;结果不正确…...

全网独家首发|极致版YOLOv7改进大提升(推荐)网络配置文件仅24层!更清晰更方便更快的改进YOLOv7网络模型

有不少小伙伴和我交流YOLO改进的时候&#xff0c;都说YOLOv7的网络配置文件长达104层&#xff0c;改起来很费力&#xff0c;数层数都要数很久&#xff0c;还很容易出错&#xff0c;而且基于YOLOv5代码架构&#xff0c;Debug起来也确实比较费时&#xff0c;所以博主对YOLOv7网络…...

C++入门 谁都能看懂的类和对象

类 C语言结构体中只能定义变量. 在C中&#xff0c;结构体内不仅可以定义变量&#xff0c;也可以定义函数。 //c语言 typedef struct ListNode {int val;struct ListNode* next; }LTN; //c struct ListNode {int val;//c中可以直接用这个&#xff0c;不用加structListNode* next…...

C++ STL:string类的模拟实现

目录 前置说明 一. 构造函数和析构函数的模拟实现 1.1 构造函数 1.2 析构函数 二. string类对象容量及成员相关的函数 2.1 获取字符串有效字符数、容量及_str成员变量获取相关函数 2.2 扩容及变长相关函数 2.3 字符串清空和判空函数 三. 运算符重载函数 3.1 赋值运算…...

并发编程---线程池(六)

阻塞队列的应⽤——线程池一 线程池基本概念二 线程池三种常⽤创建⽅式2.1.newFixedThreadPool线程池&#xff1a;2.2.newSingleThreadExecutor线程池&#xff1a;2.3.newCachedThreadPool线程池&#xff1a;2.4. 线程池代码演示三 线程池创建的七个参数四 线程池底层原理理解&…...

【Java实战】不会还有人用if else进行参数校验吧

当请求参数很多&#xff0c;几乎每一个参数都需要后端去兜底校验时&#xff0c;你还在写if else去判断参数是否为空吗&#xff1f;&#xff1f;要校验为空的参数三四个还好&#xff0c;要是十几个&#xff0c;业务逻辑还没开始就写二三十行代码开始堆山了嘛&#xff0c;教给大家…...

深度学习部署(十六): CUDA RunTime API _vector-add 使用cuda核函数实现向量加法

1. 知识点 nthreads的取值&#xff0c;不能大于block能取值的最大值。一般可以直接给512、256&#xff0c;性能就是比较不错的 (input_size block_size - 1) / block_size;是向上取整 对于一维数组时&#xff0c;采用只定义layout的x维度&#xff0c;若处理的是二维&#xff…...

堆结构的两个应用

堆排序 堆结构很大的一个用处&#xff0c;就是用于堆排序了&#xff0c;堆排序的时间复杂度是O(n∗log2n)O(n*log_2n)O(n∗log2​n)量级的&#xff0c;在众多排序算法中所处的地位也是高手级别的了。 但很多人在使用堆排序的时候&#xff0c;首先认为我必须得有一个堆数据结构…...

Java中的 static

1 static 静态变量 1.1 静态变量的使用 static变量也称作静态变量&#xff0c;也叫做类变量 静态变量被所有的对象所共享&#xff0c;在内存中只有一个副本 当且仅当在类初次加载时会被初始化 静态变量属于类 通过类名就可以直接调用静态变量 也可以通过对象名.静态变量…...

基于Vision Transformer的图像去雾算法研究与实现(附源码)

基于Vision Transformer的图像去雾算法研究与实现 0. 服务器性能简单监控 \LOG_USE_CPU_MEMORY\文件夹下的use_memory.py文件可以实时输出CPU使用率以及内存使用率&#xff0c;配合nvidia-smi监控GPU使用率 可以了解服务器性能是否足够&#xff1b;运行时在哪一步使用率突然…...

服务器相关常用的命令

cshell语法 https://www.doc88.com/p-4985161471426.html domainname命令 1&#xff09;查看当前系统域名 domainname2&#xff09;设置并查看当前系统域名 domainname example.com3&#xff09;显示主机ip地址 domainname -Iwhich命令 which 系统命令在 PATH 变量指定的…...

今天是国际数学日,既是爱因斯坦的生日又是霍金的忌日

目录 一、库函数计算 π 二、近似值计算 π 三、无穷级数计算 π 四、割圆术计算 π 五、蒙特卡罗法计算 π 六、计算800位精确值 从2020年开始&#xff0c;每年的3月14日又被定​为国际数学日​&#xff0c;是2019年11月26日​联合国教科文组织​第四十届大会上正式宣布…...

Qt Quick - StackLayout 堆布局

StackLayout 堆布局一、概述二、attached 属性三、例子1. 按钮切换 StackLayout 页面一、概述 StackLayout 其实就是说&#xff0c;在同一个时刻里面&#xff0c;只有一个页面是展示出来的&#xff0c;类似QStackWidget 的功能&#xff0c;主要就是切换界面的功能。这个类型我…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化

是不是受够了安装了oracle database之后sqlplus的简陋&#xff0c;无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话&#xff0c;配置.bahs_profile后也能解决上下翻页这些&#xff0c;但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可&#xff0c…...

LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)

在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...

Android写一个捕获全局异常的工具类

项目开发和实际运行过程中难免会遇到异常发生&#xff0c;系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler&#xff0c;它是Thread的子类&#xff08;就是package java.lang;里线程的Thread&#xff09;。本文将利用它将设备信息、报错信息以及错误的发生时间都…...