当前位置: 首页 > 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;主要就是切换界面的功能。这个类型我…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

ThreadLocal 源码

ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物&#xff0c;因为每个访问一个线程局部变量的线程&#xff08;通过其 get 或 set 方法&#xff09;都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段&#xff0c;这些类希望将…...

UE5 音效系统

一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类&#xff0c;将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix&#xff0c;将上述三个类翻入其中&#xff0c;通过它管理每个音乐…...

Linux基础开发工具——vim工具

文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...