2024年第15届蓝桥杯C/C++组蓝桥杯JAVA实现
目录
第一题握手,这个直接从49累加到7即可,没啥难度,后面7个不握手就好了,没啥讲的,(然后第二个题填空好难,嘻嘻不会)
第三题.好数编辑
第四题0R格式
宝石组合
数字接龙
最后一题:拔河
第一题握手,这个直接从49累加到7即可,没啥难度,后面7个不握手就好了,没啥讲的,(然后第二个题填空好难,嘻嘻不会)
第三题.好数
不是哥们,真比JAVA简单一倍啊,啥奇怪的东西,牛魔的奇数位偶数位都出来了。纯暴力不说了也。
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner in=new Scanner(System.in);int N=in.nextInt();int count=0;for(int i=1;i<=N;i++){int tmp=0;int k=1;int p=i;while(p!=0){//求出来个位int t=p%10;//个位if(t%2==0&&k%2!=0){tmp=1;break;}//十位,else if(t%2!=0&&k%2==0){tmp=1;break;}k++;p=p/10;}if(tmp==1){continue;}else{count++;}}System.out.println(count);} }
第四题R格式
开始的时候没想到用BigDecimal,寻思拿long就够,谁知道根本跑不出来,所以选择使用这个大数,大数的很多东西我都没用过,比如说什么xx次幂,还可以,四舍五入,完全没接触过,我第一次不知道有对应的方法,选择求出中间数,然后计算比如一个进行+1取舍,一个减一,然后两个/2就好
知道遇上了这个
BigDecimal.setScale()方法用于格式化小数点
BigDecimal.setScale(1)保留小数点后一位小数,四舍五入
setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3
setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4
setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4setScale(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5也向下舍
下面这个图是从这个地方摘的
import java.util.Scanner;
import java.math.BigDecimal;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner in=new Scanner(System.in);int n=in.nextInt();BigDecimal tmp=new BigDecimal("2");BigDecimal d=new BigDecimal(String.valueOf(in.nextBigDecimal()));
//tmp此时等于16,我们需要对数字进行操作tmp=tmp.pow(n);System.out.println(d.multiply(tmp).setScale(0,BigDecimal.ROUND_HALF_UP));}
}
宝石组合
数学知识:(最小公倍数)lcm(a,b)
最小公倍数:是能被A和B整除的最小正整数值
lcm(a,b)=a*b/gcd(a,b)
gcd两者之间的最大公约数
辗转相除法:a和b两者的最大公约数gcd(b,a%b)(b,a%b 记住顺口溜吧)
最大公约数,b逗a磨b
最小公倍数,相乘除公约(最大)
这个是我看到的题解,当然了,开始看公式谁来也会一脸懵,我们这样枚举一个数字
24 12 6 他们三个的最小公倍数 能被她们三个整除的最小正整数是24
这个是题解上看到的解释。
然后我们思考一下,gcd(a,b,c)最大公约数,是不是一定不会超过三者里面最大的那个。
因此我们直接枚举S,看abc啥的是否有符合的即可(最大公约数,这个数字可以整除这三个数字,那么我们是否可以思考一下,哪些数字可以整除最大s,假如不够3个,则往后走
import java.util.*; // 1:无需package // 2: 类名必须Main, 不可修改public class Main {public static int S=100001;public static void main(String[] args) {Scanner scan = new Scanner(System.in);int N=scan.nextInt();int[] a=new int[N];for(int i=0;i<N;i++){a[i]=scan.nextInt();} //这里是个细节,你不写这一行,有一个用例过不去,我们使用的方法和C++大哥使用方法不一样,他是用S去找a[i],我是用a[i]找S. //区别:用S找a[i],他会自动找到顺序,比如S=3,他会先3,6,9,12这样找a[i]有没有这个值 //我们是什么a[i]找S,换句话说a[i]%S假如等于0就说明可以被a[i]整除, //那么这里来了一个问题,我们如何确保顺序性呢,比如14523,他们的可以确认顺序,因为是从1S,2S,3S这么过来的,那么我们找就可以选择使用一个排序,这样我们遍历使用就是字典序了,然后容器选啥都可以,Array,int[],我这个优先级队列(堆),因为排序做完了Arrays.sort(a);PriorityQueue <Integer>p=new PriorityQueue<>();while(S>=1) {int count = 0;for (int i = 0; i < N; i++) {//思考清楚是谁除谁,最大公约数是x的话,是a[i]%x==0才叫x是a[i]的公约数。if (a[i]%S == 0) {p.add(a[i]);count++;}if(count==3) break;;}if(count==3) break;;p.clear();S--;}while(!p.isEmpty()){System.out.print(p.poll()+" ");}}}
数字接龙
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {
// 1:无需package
// 2: 类名必须Main, 不可修改static int[]dx={-1,-1,0,1,1, 1, 0,-1};static int[]dy={0, 1,1,1,0,-1,-1,-1};static Stack<Integer>q=new Stack<>();static boolean[][]vis;static int N;static int K;static int[][]a;static boolean[][][][]tail;//从[fx,fy]到[x,y]public static boolean four(int fx,int fy,int x,int y,int i){//这一步是判断他是否构成斜线,假如他是横线,或者竖直的我们不需要考虑if(i%2==1){//tail[x][fy][fx][y]==false&&tail[fx][y][x][fy]==false// tail[fx][y][x][fy]==false&&tail[x][fy][fx][y]==falseif(tail[x][fy][fx][y]==false&&tail[fx][y][x][fy]==false) {return true;}else return false;}return true;}public static boolean check(int fx,int fy,int x,int y,int i){// (fy-y)/(fx-x)==1)&&x<fx//比较难处理的就是条件四if (x >= 0 && y >= 0 && x < N && y < N//当前没有被遍历过&& vis[x][y] == false&& ((a[x][y]<K&&a[fx][fy] + 1 == a[x][y]) ||a[x][y] ==(a[fx][fy]+1)%K) &&four(fx,fy,x,y,i)==true) {return true;}return false;}//表示起点public static boolean dfs(int a,int b){if(a==N-1&&b==N-1){return q.size()==N*N-1;}for(int i=0;i<8;i++){int x=a+dx[i];int y=b+dy[i];if(check(a,b,x,y,i)==true){vis[x][y]=true;tail[a][b][x][y]=true;q.add(i);if (dfs(x,y)==true) return true;vis[x][y]=false;tail[a][b][x][y]=false;q.pop();}}return false;}public static void main(String[] args) {//这道题的思考,首先肯定不是bfs因为他没办法进行回溯,我牛魔不去回溯,我怎么知道那条路可以走到,所以需要回溯,使用dfsScanner in=new Scanner(System.in);N=in.nextInt();K=in.nextInt();a=new int[N][N];//思维数组纯暴力破解tail=new boolean[N][N][N][N];for(int i=0;i<N;i++){for(int j=0;j<N;j++) {a[i][j]=in.nextInt();}}vis=new boolean[N][N];vis[0][0]=true;if(dfs(0,0)==true){for(int i=0;i<q.size();i++){//注意我开始写的时候,假如用栈的话,你不可以poll哦,因为假如说是poll就会后面的先出来,顺序System.out.print(q.get(i));}}else {System.out.print(-1);}
}
}
最后一题:拔河
(说实话,真比JAVA最后一题简单一些,但是他也有难的地方,区间的一个排序很难,以及你暴力没办法解决)
纯暴力是肯定不能ac,估计也就通过6,7个例子,我们从暴力的过程中,学到优化才是核心目的。
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner in=new Scanner(System.in);int n=in.nextInt();long []a=new long[n+1];for(int i=1;i<=n;i++){a[i]=in.nextLong();}long[][]dp=new long[n+1][n+1];for(int i=1;i<=n;i++){for(int j=i;j<=n;j++){//从i位置到j,i到j-1然后+1dp[i][j]=dp[i][j-1]+a[j];}}
//最后我们思考,他的区间一定是连续,并且不重叠的for(int i=0;i<=n;i++) {dp[0][i]=dp[i][0]=0x3f3f3f3f3f3f3f3fL;}long min=0x3f3f3f3f3f3f3f3fL;
//换句话,正确的话,就是暴力枚举,一个枚举左边的左端点,另一个枚举右端点,再来一个枚举右边的左端点,来一个枚举右边的右端点//左端点从左侧,开始最后的n,但是细想一下,左端点是否可以等于n,答案应该是不可以的,左端点的右端点也不该到n,右端点的左端点肯定不可以和那个是左端点的右连起来for(int i=1;i<n;i++){for(int j=i;j<n;j++){for(int t=j+1;t<=n;t++) {for (int k = t; k <= n; k++) {min = Math.min(Math.abs(dp[i][j ] - dp[t][k]), min);}}}}System.out.println(min);}
}
那么我们该如何优化呢?,
在这里引入数据结构
TheeSet:特点有序性,唯一性,插入删除查找都是O(logN)(内部是红黑)
first(返回数组中最小的元素)
last(返回数组中最大的元素)
higher(E e)返回集合中大于给定元素的最小元素
lower(E e):返回集合中严格小于给定元素的最大元素
ceiling(E e)返回集合中最小的大于或等于给定元素的元素
引入这个结构是为了让他有序,我们根据这个有序,随便来组合,不管他重复与否,全给他放入,
Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();long[] a = new long[n + 1];for (int i = 1; i <= n; i++) {a[i] = scanner.nextInt();a[i] += a[i - 1];}TreeSet<Long> s = new TreeSet<>();//初始化一个很大数字long ans = 1000000000L;for (int i = 1; i <= n; i++) {for (int j = i; j <= n; j++) {//从1开始不断因为我们前缀和,所以需要不断减去a[i-1]的值,从a[1]-a[0],a[2]-a[0]...a[2]-a[1]...,不断求出不同位置的前缀和if (!s.contains(a[j] - a[i - 1])) {//假如s里面之前已经有了这个值,就说明两个数字相同,直接返回0就行s.add(a[j] - a[i - 1]);} else {System.out.println(0);return;}}}//此时已经把所有的数组都处理好了,然后我们需要做for (int i = 1; i < n; i++) {for (int j = 1; j <= i; j++) {//t会走到所有的元素,假如TreeSet里面有(你要是说有最大的,最大的你想找较小的,// 那么是否我们会找到较小的,然后找到最大的,所以不用去顾虑顺序啥的long t = a[i] - a[j - 1];// higher(E e)返回集合中大于给定元素的最小元素//我在思考一个问题假如说 a b c x y z 假如说a+b和b+c他俩相差最小的情况呢,那么是否ac就可以,b不用管//或者a b c 我们发现一个问题,假如出现重复的最小的情况,那么不需要重复的,换句话说 a+b 和b+c最小,其实不用看b,a和c最小//我思考的是什么(如何保证两个前缀和,之间没有重复元素,假如有重复元素不就不可以了吗,但是实际上两个出现重复就不需要看重复//这样一想,一切的2个连续子数组之和,求最小即可,有重复也可以(我重复的可以认为是把重复的去除)Long p = s.higher(t);if (p == null) {//假如没有比他大的,那就去找first(返回数组中最小的元素) //这里就是需要处理一下边界条件,但是假如是空,返回任意一个即可,无需说是一定就firstp = s.first();}//没有比他大的,然后用t这个值减去p这个值ans = Math.min(ans, Math.abs(t - p));}}System.out.println(ans);
相关文章:
2024年第15届蓝桥杯C/C++组蓝桥杯JAVA实现
目录 第一题握手,这个直接从49累加到7即可,没啥难度,后面7个不握手就好了,没啥讲的,(然后第二个题填空好难,嘻嘻不会) 第三题.好数编辑 第四题0R格式 宝石组合 数字接龙 最后一题:拔河 第…...
MongoDB 和 Redis 是两种不同类型的数据库比较
MongoDB 和 Redis 是两种不同类型的数据库,设计目标和应用场景各有侧重,因此性能对比需要结合具体需求场景进行评估。 1. MongoDB 性能特点 类型: 文档型数据库(NoSQL)。适合场景: 复杂查询:支持丰富的查询语法和索引…...
CLIP-Adapter: Better Vision-Language Models with Feature Adapters 论文解读
abstract 大规模对比视觉-语言预训练在视觉表示学习方面取得了显著进展。与传统的通过固定一组离散标签训练的视觉系统不同,(Radford et al., 2021) 引入了一种新范式,该范式在开放词汇环境中直接学习将图像与原始文本对齐。在下游任务中,通…...
Spring Boot 开发环境搭建详解
下面安装spring boot的详细步骤,涵盖了从安装 JDK 和 Maven 到创建和运行一个 Spring Boot 项目的全过程。 文章目录 1. 安装 JDK步骤 1.1:下载 JDK步骤 1.2:安装 JDK步骤 1.3:配置环境变量 2. 安装 Maven步骤 2.1:下载…...
网络安全中的数据科学如何重新定义安全实践?
组织每天处理大量数据,这些数据由各个团队和部门管理。这使得全面了解潜在威胁变得非常困难,常常导致疏忽。以前,公司依靠 FUD 方法(恐惧、不确定性和怀疑)来识别潜在攻击。然而,将数据科学集成到网络安全中…...
安装数据库客户端工具
如果没有勾选下面的,可以运行下面的两个命令 红框为自带数据库 新建数据库 右键运行mysql文件,找到数据库,并刷新...
GoogleTest做单元测试
目录 环境准备GoogleTest 环境准备 git clone https://github.com/google/googletest.git说cmkae版本过低了,解决方法 进到googletest中 cmake CMakeLists.txt make sudo make installls /usr/local/lib存在以下文件说明安装成功 中间出了个问题就是,…...
深入解析 EasyExcel 组件原理与应用
✨深入解析 EasyExcel 组件原理与应用✨ 官方:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 官网 在日常的 Java 开发工作中,处理 Excel 文件的导入导出是极为常见的需求。 今天,咱们就一起来深入了解一款非常实用的操作 Exce…...
JSON数据转化为Excel及数据处理分析
在现代数据处理中,JSON(JavaScript Object Notation)因其轻量级和易于人阅读的特点而被广泛使用。然而,有时我们需要将这些JSON数据转化为Excel格式以便于进一步的分析和处理。本文将介绍如何将JSON数据转化为Excel文件࿰…...
(计算机网络)期末
计算机网络概述 物理层 信源就是发送方 信宿就是接收方 串行通信--一次只发一个单位的数据(串行输入) 并行通信--一次可以传输多个单位的数据 光纤--利用光的反射进行传输 传输之前,要对信源进行一个编码,收到信息之后要进行一个…...
【AI技术赋能有限元分析应用实践】将FEniCS 软件安装在Ubuntu22.04
FEniCS 完整介绍 FEniCS 是一个开源的计算工具包,专门用于解决偏微分方程(PDE)的建模和求解。它以灵活的数学抽象和高效的计算性能著称,可以让用户使用高层次的数学表达来定义问题,而无需关注底层的数值实现细节。 具体来看,FEniCS 是一个开源的高性能计算工具包,用于…...
快速识别模型:simple_ocr,部署教程
快速识别图片中的英文、标点符号、数学符号、Emoji, 模型会输出图片中文字行的坐标位置、最低得分、识别结果。当前服务用到的模型:检测模型、数字识别、英文符号识别。 一、部署流程 1.更新基础环境 apt update2.安装miniconda wget https://repo.anaconda.com/…...
【C/C++】数据库链接入门教程:从零开始的详细指南!MySQL集成与操作
文章目录 环境配置:搭建开发环境的基础步骤2.1 安装MySQL数据库2.2 配置C/C开发环境2.3 下载并安装MySQL Connector/C 基础操作:实现C/C与MySQL的基本交互3.1 建立数据库连接3.2 执行SQL语句3.3 处理查询结果 进阶技巧:提升数据库操作效率与安…...
C#中面试的常见问题005
1、重载和重写 重载(Overloading) 重载是指在同一个类中定义多个同名方法,但参数列表不同(参数的数量、类型或顺序不同)。返回类型可以相同也可以不同。重载方法允许你根据传入的参数类型和数量来调用不同的方法。 …...
使用Redis生成全局唯一id
为了生成一个符合要求的分布式全局ID,我们可以使用 StringRedisTemplate 来实现。这个ID由三部分组成: 符号位(1 bit):始终为0,表示正数。时间戳(31 bit):表示从某个起始…...
pnpm:包管理的新星,平替 npm 和 yarn
pnpm,一个老牌的 node.js 包管理器,支持 npm 的所有功能,完全足以用来替代 npm。它采用全局存储,每个项目内部使用了硬链接,所以很省空间,安装速度快。 本文介绍下 pnpm 的基本概念,安装、…...
Android调起系统分享图片到其他应用
Android调起系统分享图片到其他应用 有时候分享不想接第三方的,其实如果你的分享要求不是很高,调系统的分享也是可以的。 一、思路: 用intent.action Intent.ACTION_SEND 二、效果图: 三、关键代码: //这个是分享…...
详解Qt QBuffer
文章目录 **QBuffer 的详解****前言****QBuffer 是什么?****QBuffer 的主要用途****构造函数****主要成员函数详解****1. open()****原型:****作用:****参数:****返回值:****示例代码:** **2. write()****原…...
Python基础学习-11函数参数
1、"值传递” 和“引用传递” 1)不可变的参数通过“值传递”。比如整数、字符串等 2)可变的参数通过“引用参数”。比如列表、字典。 3)避免可变参数的修改 4)内存模型简介 2、函数参数类型 1) def func() #无参…...
GTK#框架让C# Winform程序跨平台运行
在软件开发领域,跨平台能力是一个重要的考量因素。对于C#开发者来说,Winform是构建桌面应用的强大工具,但原生Winform只支持Windows平台。幸运的是,GTK#框架的出现让C# Winform程序跨平台运行成为可能。本文将详细介绍如何使用GTK…...
在Kubernetes使用CronJob实现定时删除指定天数外的文件(我这里使用删除备份mysql数据库文件为例)
文章目录 一、代码使用方式1、golang代码2、使用方法二、容器镜像使用方式1、制作镜像2、我公开的镜像3、使用方法一、代码使用方式 1、golang代码 vim cleanfile.go package mainimport ("flag""fmt""io/ioutil""os""path/fi…...
使用 Elastic 收集 Windows 遥测数据:ETW Filebeat 输入简介
作者:来自 Elastic Chema Martinez 在安全领域,能够使用 Windows 主机的系统遥测数据为监控、故障排除和保护 IT 环境开辟了新的可能性。意识到这一点,Elastic 推出了专注于 Windows 事件跟踪 (ETW) 的新功能 - 这是一种强大的 Windows 原生机…...
力扣-位运算-4【算法学习day.44】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…...
Stable Diffusion 3详解
🌺系列文章推荐🌺 扩散模型系列文章正在持续的更新,更新节奏如下,先更新SD模型讲解,再更新相关的微调方法文章,敬请期待!!!(本文及其之前的文章均已更新&…...
c#异步编程(async/await)
注:下文摘自ChatGPT,总结与案例都非常完善,可以快速理解并应用 0:使用场景 在winform界面程序中,在ui操作中涉及到一些耗时的等待操作,使用线程自己处理已经显得力不从心,如何能更好的实现&am…...
TCP/IP学习笔记
TCP\IP从实际应用的五层结构开始,自顶而下的去分析每一层。 TCP/IP五层架构概述 学术上面是TCP/IP四层架构,OSI/ISO是七层架构,实际中使用的是TCP/IP五层架构。 数据链路层 ICMP数据包分析 Wireshark抓包分析ICMP协议_wireshark抓ping包分析…...
0000_vim自定义快捷键_alias
vim自定义快捷键_alias 如下: 1.直接打开vi ~/.bashrc 然后到最底部,添加alias快捷键 2.添加alias快捷键mgplat 以后只要发送mgplat就等于出发了那么长一条指令 3.保存退出即可 【注意】 操作完后,可能你用mgplat无法使用,可…...
Spring Boot项目中,实体类是否需要实现Serializable接口
在Spring Boot项目中,实体类是否需要实现Serializable接口并不是一个硬性规定,而是取决于具体的应用场景和需求。以下是对这一问题的更详细分析: 1. 序列化的基本概念 序列化是将对象的状态信息转换为可以存储或传输的形式的过程。反序列化则…...
打通工业通信壁垒实现Ethernetip转profinet网络互通
西门子S7-1500 PLC(profinet)与AB PLC 1769-L32E以太网通讯(EtherNet/IP)。今天与大家分享一篇Profinet转EtherNet/IP的通讯配置方案。本文主要介绍开疆智能的Profinet转EtherNet/IP网关KJ-PNG-208,连接西门子S7-1500 …...
数据结构_图的应用
最小生成树 Prim算法 int AMGraph::sum(string v) {int start, totalW, cnt, minW, u, vv, i, j;start LocateVex(v); // 获取起始顶点编号memset(visited, false, sizeof(visited)); // 初始化访问状态visited[start] true;totalW 0; // 最小生成树的总权重cnt 1; // 当前…...
宝安高端网站建设公司/廊坊seo网络推广
1382: [Baltic2001]Mars Maps Time Limit: 5 Sec Memory Limit: 64 MB Submit: 85 Solved: 38 [Submit][Status][Discuss] Description 给出N个矩形,N<10000.其坐标不超过10^9.求其面积并 Input 先给出一个数字N,代表有N个矩形. 接下来N行,每行四个数,代表矩形的坐标. Out…...
东北石油大学秦皇岛吧/seo社区
在PHP中,数组函数 prev () 用来将数组的内部指针倒回一位并返回值。 函数语法: prev ( array &$array ) : mixed 函数参数说明: 参数描述array必需。规定要使用的数组。prev() 函数用来将内部指针指向数组中的上一个元素,并…...
设计说明模板300字/怎么做seo关键词优化
目前常用的DEM有90米、30米、12.5米等精度 90米DEM 90米的DEM数据来自于美国航空航天局NASA SRTM C波段的数据,覆盖了全球南北纬60度以内的区域。有两种精度,分别是1角秒和3角秒精度,也因此被称作SRTM1和SRTM3,两者分别对应精度…...
上海购物网站建设/链接搜索
maven项目,maven-install总是出现这个错误,气死了, 查阅资料终于找到解决办法: 原因 这是由于缺少maven-resources-plugin-2.4.3.jar文件。这个文件是在{user.home}\.m2\repository\org\apache\maven\plugins\maven-resources-plugin\下。{user.home}是maven的配置路径…...
兰州网站优化公司/网络营销环境分析
概述 Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的应用程序的完美解决方案。 Redis从它的许多竞争继承来的三个主要特点: Redis数据库完全在内存中,使用磁盘仅用于持久性。 相比许多键值数据存储&…...
网站门户建设方案/沧州网站seo公司
网络延迟指一个数据包从用户的计算机发送到网站服务器,然后再立即从网站服务器返回用户计算机的来回时间。在这个过程中包括:计算机网卡、网络设备、链路、服务器组成部分,每个部分转发数据流量都要消耗时间,所有部分消耗的时间加…...