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

第十六届蓝桥杯大赛软件赛省赛Java 大学 A 组

题目链接:

Q1:数位倍数(简单)

Q2:2025(简单)

Q3:变换数组(简单)

Q4:最短距离(简单)

算法原理:

Q1解法:暴力枚举

时间复杂度O(M)(其中 M = 202504)

思路很简单,遍历每个数,取出每一位相加,只要累加和sum能被5整除就cnt++,最后打印一下cnt即可

Q2解法:暴力枚举

时间复杂度O(M)(其中 M = 20250412)

思路很简单,遍历每个数,取出每一位,如果是0、2或5就给对应计数++,然后判断一下是否满足cnt0≥1、cnt2≥2、cnt5≥1,符合就及时cnt++,然后break,最后打印cnt即可

Q3解法:模拟

时间复杂度O (m×n)

思路很简单,就是模拟,进行m次变换,每次变换a[i]=a[i]×Inetger.bitCount(a[i])

易错点:要按格式输出结果

例如:写成如下仅能通过10%测试用例

for(int i=0;i<n;i++) System.out.print(a[i]);

但写成如下就可通过100%测试用例

for(int i=0;i<n;i++){ if(i>0) System.out.print(" "); System.out.print(a[i]); }

Q4解法:贪心

时间复杂度O(nlogn)

贪心原理:“任何不按顺序配对的方案,都可以通过调整,得到一个总长度更小的方案”

贪心结论:“能连就连”

这里我们避免了复杂的证明,就拿一个典型的例子来形象的理解一下👇

我们可以举个极端一点的例子,下面0代表一单位距离,Xᵢ 代表第 i 台显示器,Yᵢ 代表第 i 台插座

[0,0,X₁,0,0,Y₁,0,0,0,X₂,0,0,0,0,0,0,0,0,0,Y₂]

非贪心情况:X₁→Y₂,X₂→Y₁,此时会导致中间的0,0,0重复计算了两次

贪心情况:X₁→Y₁,X₂→Y₂,此时会导致中间的0,0,0直接被剩下了,节省了6个单位长度,因此最优贪心就是:“能连就连”

Java代码:

Q1

import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int cnt=0; for(int i=1;i<=202504;i++){ int t=i,sum=0; while(t!=0){ sum+=(t%10); t/=10; } if(sum%5==0) cnt++; } System.out.println(cnt); scan.close(); } }

Q2

import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int cnt=0; for(int i=1;i<=20250412;i++){ int t=i,cnt0=0,cnt2=0,cnt5=0; while(t!=0){ int cur=t%10; if(cur==0) cnt0++; else if(cur==2) cnt2++; else if(cur==5) cnt5++; t/=10; if(cnt0>=1&&cnt2>=2&&cnt5>=1){ cnt++; break; } } } System.out.println(cnt); scan.close(); } }

Q3

import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { 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(); int m=scan.nextInt(); for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ a[j]=a[j]*Integer.bitCount(a[j]); } } for(int i=0;i<n;i++){ if(i>0) System.out.print(" "); System.out.print(a[i]); } scan.close(); } }

Q4

import java.util.Scanner; import java.util.Arrays; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int n=scan.nextInt(); int[] a=new int[n]; int[] b=new int[n]; for(int i=0;i<n;i++) a[i]=scan.nextInt(); for(int i=0;i<n;i++) b[i]=scan.nextInt(); long sum=0; //贪心:遇到就连 Arrays.sort(a); Arrays.sort(b); for(int i=0;i<n;i++) sum+=Math.abs(a[i]-b[i]); System.out.println(sum); scan.close(); } }
http://www.jsqmd.com/news/436302/

相关文章:

  • 河南如意林树叶收集车领衔全国 85%市占率赋能环卫园林革新 - 朴素的承诺
  • pip SSLError解决
  • 河南如意林树叶收集车领跑行业 高新技术赋能全国环卫绿色升级 - 朴素的承诺
  • 河南如意林领航园林机械:树叶收集车赋能城乡清洁新生态 - 朴素的承诺
  • 自动迷宫求解机器人:基于深度强化学习的智能路径规划
  • 基于深度学习的安全锥识别检测系统|全新web界面|多模态|AI大模型智能分析|YOLOv8、YOLOv10、YOLOv11、YOLOv12
  • C# 正则表达式从入门到实战
  • 基于深度学习的3D打印缺陷识别检测系统|全新web界面|多模态|AI大模型智能分析|YOLOv8、YOLOv10、YOLOv11、YOLOv12
  • 人形机器人24小时风向变了:面部智能进化+工厂实习加速落地
  • Java 通过GDAL实现将图片转成GEOTIFF文件
  • 聚焦环保全屋定制:2026国内最新适配家装柜体防潮需求的十大木纹板材实力厂家 - 十大品牌榜
  • 基于深度学习的苹果成熟度识别检测系统|全新web界面|多模态|AI大模型智能分析|YOLOv8、YOLOv10、YOLOv11、YOLOv12
  • 车载以太网设备如何进行线束连接
  • 靠谱的海关数据生产厂家
  • 聚焦环保健康全屋定制:2026国内最新适配家装柜体需求的十大生态板加工厂 - 十大品牌榜
  • 基于深度学习的条形码识别检测系统|全新web界面|多模态|AI大模型智能分析|YOLOv8、YOLOv10、YOLOv11、YOLOv12
  • Matlab直流潮流程序实现详解(基于IEEE 9节点系统)
  • winform 继承Panel的控件设置双缓冲
  • 基于深度学习的轴承缺陷识别检测系统|全新web界面|多模态|AI大模型智能分析|YOLOv8、YOLOv10、YOLOv11、YOLOv12
  • 内燃机专业EI会议IOP-JPCS出版 | 2026年内燃机技术与能源动力工程国际学术会议(ICTEPE 2026)
  • Java基础(下)之网络编程
  • 聚焦环保健康全屋定制:2026国内最新适配家装全场景的十大柜子定制板材生产厂家 - 十大品牌榜
  • Java基础(课后笔记)
  • 改造策略
  • Superpowers:CC 资深工程素养 Skills 库
  • CANoe性能问题的处理方法
  • GIT将某分支(develop分支)合并至某分支(yunwei/develop分支)具体过程
  • 2026年发电机租赁行业权威分析报告:深度解析与优选指南 - 深度智识库
  • C++数据结构与算法_双指针法
  • 2026年中国智能办公平台深度研究报告