【蓝桥杯 第十四届省赛Java B组】真题训练(A - E)正在更新

目录

A、阶乘求和 - BigInteger

B、幸运数字 - 字符串 + 进制转换 暴力大法

C、数组分割 - 数学思维 + 乘法排列组合 

D、矩形总面积 - 推导公式 + 找规律

 (1)暴力大法好 50%

(2)正解 100%

E、蜗牛 - (我以为是模拟其实是线性DP)

(1)自己写的(模拟) 27/100

 (2)线性dp 100%


A、阶乘求和 - BigInteger

思路:

当时比赛时,拿计算器算的,然后辛辛苦苦也没对

看到这个数肯定很大,而且只求后9位,阶乘越大,后面0个数会逐渐增长

首先设置BigInteger测试,发现从40!开始,再往后的数,后9位均为0,所以我们只用计算1!+……+39!然后取余就ok

答案是:420940313

import java.math.BigInteger;
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);long res=0;for(int i=1;i<=39;i++)res=(res+f(i))%1000000000;System.out.println(res);}public static long f(int x){BigInteger res=new BigInteger("1");for(int i=1;i<=x;i++) {res=res.multiply(BigInteger.valueOf(i));res=res.mod(BigInteger.valueOf(1000000000));}return res.longValue();}
}

B、幸运数字 - 字符串 + 进制转换 暴力大法

思路:

可以偷懒用Java的进制转换api

注意对16进制转换时,a对应10,b对应11…… 

答案是:215040

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int cnt=0;int i=1;while(true){if(ck(i,Integer.toBinaryString(i))&&ck(i,Integer.toOctalString(i))&&ck(i,Integer.toHexString(i))&&ck(i,String.valueOf(i)))cnt++;if(cnt==2023) {System.out.println("!!"+i);break;}i++;}}public static boolean ck(int x,String s){int sum=0;for (char c:s.toCharArray())if(c>='a'&&c<='f') sum+=c-87;else sum+=c-'0';if(x%sum==0) return true;return false;}
}

C、数组分割 - 数学思维 + 乘法排列组合 

思路:

       这题我就想不出来(数学思维这种),做这题可以拓展一些思维,我每次见题第一反应都是暴力,因为题目要求是任取子集,也就是任意取元素,不要求元素连续,因此可以跳出数组遍历取值的思维

要让A0和A1均为偶数,我们可以将数组中元素分为【奇数】和【偶数】两堆

  • 则取数时,在【偶数】堆可以任取,因为偶数+偶数=偶数
  • 在【奇数】堆必须取偶数个,因为奇数+奇数=偶数
  • 当然如果奇数堆元素个数为奇数,则该数组肯定无法满足题意,答案为0

假设【偶数】堆元素个数为s1,【奇数】堆元素个数为s2

  • 在偶数堆的取法方案数     ans1 = 2^{s1}
  • 在奇数堆取法方案数         ans2 = C_{s2}^{0}\textrm{}+C_{s2}^{2}\textrm{}+...+C_{s2}^{s2}\textrm{}

则答案为 ans1×ans2 = 2^{s1} \times 2^{s2-1}

import java.util.*;public class Main {static int mod=1000000007;public static void main(String[] args) {Scanner sc=new Scanner(System.in);int t=sc.nextInt();while(t-->0){int n=sc.nextInt();int even=0,odd=0;for(int i=0;i<n;i++){int x=sc.nextInt();if(x%2==0) even++;else odd++;}if(odd%2==1){System.out.println(0);continue;}if(odd==0) odd=1; //防止出现负数int res=(int)(Math.pow(2,even)*Math.pow(2,odd-1)%mod);System.out.println(res);}}
}

D、矩形总面积 - 推导公式 + 找规律

 (1)暴力大法好 50%

import java.util.*;public class Main {static int n=10000;public static void main(String[] args) {Scanner sc=new Scanner(System.in);int[][] a=new int[n][n];int x1=sc.nextInt(),y1= sc.nextInt();int x2=sc.nextInt(),y2= sc.nextInt();int x3=sc.nextInt(),y3= sc.nextInt();int x4=sc.nextInt(),y4= sc.nextInt();int maxx=Math.max(Math.max(x1,x2),Math.max(x3,x4));int maxy=Math.max(Math.max(y1,y2),Math.max(y3,y4));for(int i=x1;i<x2;i++)for(int j=y1;j<y2;j++) a[i][j]+=1;for(int i=x3;i<x4;i++)for(int j=y3;j<y4;j++) a[i][j]+=1;long res=0;for(int i=0;i<=maxx;i++)for(int j=0;j<=maxy;j++) if(a[i][j]!=0) res++;System.out.println(res);}
}

(2)正解 100%

思路:

这题我记得考场上我写了一堆if else,一共写了前五题结果对了答案基本上没几个对的哈哈

大体思路:求出重叠部分左下角和右上角坐标,算出重叠面积,两个矩形面积-重叠就是答案

由图找规律可知,重叠部分:

  • 左下角坐标opx1 = max{min(x1,x2),min(x3,x4)} 
  • 左下角坐标opy1 = max{min(y1,y2),min(y3,y4)} 
  • 右上角坐标opx2 = min{max(x1,x2),max(x3,x4)} 
  • 右上角坐标opy2 = min{max(y1,y2),max(y3,y4)} 

因此重叠部分面积 = (opx2-opx1)×(opy1-opy2)

重叠的情况必为

opx2>opx1 && opy2>opy1

推导公式求解即可

注意用long 否则精度出现问题 

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);long x1=sc.nextInt(),y1= sc.nextInt();long x2=sc.nextInt(),y2= sc.nextInt();long x3=sc.nextInt(),y3= sc.nextInt();long x4=sc.nextInt(),y4= sc.nextInt();long opx1=Math.max(Math.min(x1,x2),Math.min(x3,x4));long opy1=Math.max(Math.min(y1,y2),Math.min(y3,y4));long opy2=Math.min(Math.max(y1,y2),Math.max(y3,y4));long opx2=Math.min(Math.max(x1,x2),Math.max(x3,x4));long s=(x2-x1)*(y2-y1)+(x3-x4)*(y3-y4);long op=0;if(opx2>opx1 && opy2>opy1) op=(opx2-opx1)*(opy2-opy1);long res=s-op;System.out.println(res);}
}

E、蜗牛 - (我以为是模拟其实是线性DP

(1)自己写的(模拟) 27/100

思路:

当时比赛这题把我折磨死,记得当时也写了个模拟,样例过了,这次自己再写一遍模拟(思路很快)然后喜提27分哈哈

蓝桥杯2023年第十四届省赛真题-蜗牛 - C语言网

我写的模拟是贪心写法,也就是每一次进行两个选择:走平地or传送?

每次选最优解,已达到整体最优,但是思考想想:有可能是一直走平地最优,尽管第一次走传送比走平地更优,这样我的模拟就不全面了,这题也算练练我的模拟能力

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int[] a=new int[n];double down=1.3,up=0.7,walk=0,cs=0,res=0;int cur=0,x=0,y=0;for(int i=0;i<n;i++) a[i]=sc.nextInt();res+=a[0];x=a[0];while(true){if(x==a[n-1]&&y==0) break; //如果抵达则退出int curdoor=sc.nextInt(),nextdoor=sc.nextInt(); //输入传送门位置walk=y/down+a[cur+1]-a[cur]; //走平地:a、从前一个传送门下来再爬来 b、如果直接就在平地,则y=0,即从前一个杆子底部爬来if(curdoor>y) cs=(curdoor-y)/up; //走传送门:分传送门在上or在下情况else cs=(y-curdoor)/down;if(cur==n-2) cs+=nextdoor/down; //如果是倒数第二根杆子往最后一根杆子走,则要从最后一个传送门下来x=a[cur+1];  //确定x y坐标,并每次取最小情况if(cs>walk){res+=walk;y=0;}else{res+=cs;y= cur==n-2? 0:nextdoor;}cur++;}System.out.println(String.format("%.2f",res));}
}

 (2)线性dp 100%

思路:

看了眼题解的dp法,跟我的模拟有异曲同工之妙,我感觉dp考虑的情况更全面

  • dp[i][0]——蜗牛爬到第i根杆子底部的最短时间
  • dp[i][1]——蜗牛爬到第i根杆子的传送门的最短时间

因此答案就是dp[n][0]

  • 到第i根杆子底部有2种情况
    • a、从前一根杆子底部爬来【dp[i-1][0]+x[i]-x[i-1]】
    • b、从前一根传送来,再从传送门下来【dp[i-1][1]+b[i-1]/down】
    • dp[i][0] = Math.min( dp[i-1][0]+x[i]-x[i-1] , dp[i-1][1]+b[i-1]/down );
  • 到第i根杆子传送门有2种情况
    • a、从第i根柱子底部爬上来【dp[i][0]+a[i]/up】
    • b、从前一根传送来,从这根上的一个传送门到另一个传送门【dp[i-1][1]+(a[i]>b[i-1]? (a[i]-b[i-1])/up:(b[i-1]-a[i])/down)】
    • dp[i][1] = Math.min(dp[i][0]+a[i]/up,dp[i-1][1]+(a[i]>b[i-1]? (a[i]-b[i-1])/up:(b[i-1]-a[i])/down));
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();double down=1.3,up=0.7;double[][] dp=new double[n+1][2];int[] x=new int[n+1],a=new int[n+1],b=new int[n+1];for(int i=1;i<=n;i++) x[i]=sc.nextInt();for(int i=1;i<=n-1;i++){a[i]=sc.nextInt();b[i]=sc.nextInt();}//dp[i][0]——蜗牛爬到第i根杆子底部的最短时间//dp[i][1]——蜗牛爬到第i根杆子的传送门的最短时间dp[1][0]=x[1];dp[1][1]=x[1]+a[1]/up;for(int i=2;i<=n;i++){dp[i][0]=Math.min(dp[i-1][0]+x[i]-x[i-1],dp[i-1][1]+b[i-1]/down); //到第i根杆子底部有2种情况:a、从前一根杆子底部爬来 b、从前一根传送来,再从传送门下来dp[i][1]=Math.min(dp[i][0]+a[i]/up,dp[i-1][1]+(a[i]>b[i-1]? (a[i]-b[i-1])/up:(b[i-1]-a[i])/down)); //到第i根杆子传送门有2种情况:a、从第i根柱子底部爬上来 b、从前一根传送来,从这根上的一个传送门到另一个传送门}System.out.println(String.format("%.2f",dp[n][0]));}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/133764.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java八股文(mysql篇)

什么是关系型数据库&#xff1f; 其是建立在关系模型基础上的一种数据库&#xff0c;这种关系分为&#xff1a;一对一&#xff0c;一对多&#xff0c;多对多。 我们的数据存放在表中&#xff0c;在表中会有一至多个字段&#xff0c;一行就是一条数据。 mysql有哪些字段呢&…

【MySQL】用户管理权限控制

文章目录 前言一. 用户管理1. 创建用户2. 删除用户3. 修改用户密码 二. 权限控制1. 用户授权2. 查看权限3. 回收权限 结束语 前言 MySQL的数据其实也以文件形式保存&#xff0c;而登录信息同样保存在文件中 MySQL的数据在Linux下默认路径是/var/lib/mysql 登录MySQL同样也可以…

如何在macbook上删除文件?Mac删除文件的多种方法

在使用MacBook电脑时&#xff0c;桌面上经常会积累大量的文件&#xff0c;而这些文件可能已经不再需要或已经过时。为了保持桌面的整洁和提高电脑性能&#xff0c;我们需要及时删除这些文件。本文将介绍MacBook怎么删除桌面文件&#xff0c;以及macbook删除桌面文件快捷键。 一…

C 语言左移位操作在kernel驱动子系统中的特殊用途

文章目录 前言一、C语言左移位操作介绍1. 左移位二、左移位操作在kernel 驱动子系统中的应用1. 左移位操作在 V4L2, Media 子系统中的应用实例2.左移位操作在 DRM 子系统中的应用实例2.1 左移位操作在struct drm_crtc 中的应用2.2 左移位操作在struct drm_encoder 中的应用总结…

Flutter 07 框架和三棵树(Widgets、Elements和RenderObjects)

一、Flutter框架的整体结构&#xff1a; Flutter是Google推出并开源的跨平台开发框架&#xff0c;主打跨平台、高保真、高性能。开发者可以通过Dart语 言开发Flutter应用&#xff0c;一套代码同时运行在ios和Android平台。不仅如此&#xff0c;Flutter还支持Web、桌面、嵌 入应…

【工具】OCR方法|不用下载额外的软件,提取扫描中英文PDF的目录文本的最优解!(一)

需求&#xff1a; 1&#xff09;从PDF里快速提取目录&#xff1b; 2&#xff09;不想下载任何软件。 我提取出来的目录文本会用于嵌入到PDF中&#xff0c;向PDF批量添加目录的软件以及软件的使用方法可以看我上一篇文章&#xff1a;PDF批量插入目录。 以下是我自己能想到的方…

基于yolov2网络的人脸识别系统matlab仿真,包括识别正脸,侧脸等

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、训练阶段 4.2、预处理阶段 4.3、识别阶段 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ........................................…

FastGPT | 3分钟构建属于自己的AI智能助手

这是一篇使用指南&#xff01;&#xff01;&#xff01; FastGPT是什么&#xff1f; FastGPT 是一个基于 LLM 大语言模型的知识库问答系统&#xff0c;提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排&#xff0c;从而实现复杂的问答场景&…

BEV-YOLO 论文学习

1. 解决了什么问题&#xff1f; 出于安全和导航的目的&#xff0c;自驾感知系统需要全面而迅速地理解周围的环境。目前主流的研究方向有两个&#xff1a;第一种传感器融合方案整合激光雷达、相机和毫米波雷达&#xff0c;和第二种纯视觉方案。传感器融合方案的感知表现鲁棒&am…

一句话说明:企业架构框架鼻祖Zachman

问&#xff1a;禁止废话&#xff0c;一句话表达&#xff0c;Zachman是什么&#xff1f;包含哪些内容&#xff1f; 韩老师正经回答&#xff1a;Zachman是企业架构框架鼻祖&#xff0c;包含6行6列的矩阵式架构内容。6列是5W1H&#xff08;What、How、Where、Who、When、Why&…

Vue3 简单实现虚拟Table,展示海量单词.利用WebAPI speechSynthesis,朗读英语单词

目录 本页面完整代码 视频演示 完整的页面代码 利用webapi speechSynthesis帮助我们自动郎读英语单词&#xff0c;可以利用这个API&#xff0c;做一些小说朗读或到账提示。 本页面完整代码 用Vue写了一个简单页面&#xff0c;里面还写了一个简单的虚拟Table支持海量数据展示…

kubernetes存储-volumes

目录 一、Volumes的简介 二、emptyDir卷 1、emptyDir的引入 2、emptyDir 的使用场景 3、多容器共享volumes 4、emptyDir缺点 三、hostPath卷 1、hostPath卷简介 2、创建hostPath卷 3、NFS共享文件 四、PersistentVolume&#xff08;持久卷&#xff09; 1、PV与P…

免费音效素材,不能错过这6个网站

找免费音效素材&#xff0c;那必须要上这6个网站&#xff0c;热门音效、BGM都能免费下载&#xff0c;赶紧收藏起来。 1、菜鸟图库 https://www.sucai999.com/audio.html?vNTYwNDUx 菜鸟图库是一个综合性素材网站&#xff0c;站内涵盖设计、图片、办公、视频、音效等素材。其中…

数据可视化:动态柱状图

终于来到最后一个数据可视化的文章拿啦~~~ 在这里学习如何绘制动态柱状图 我先整个活 (๑′ᴗ‵๑)&#xff29; Lᵒᵛᵉᵧₒᵤ❤ 什么是pyecharts&#xff1f; 答&#xff1a; Python的Pyecharts软件包。它是一个用于Python数据可视化和图表绘制的库&#xff0c;可用于制作…

力扣最热一百题——盛水最多的容器

终于又来了。我的算法记录的文章已经很久没有更新了。为什么呢&#xff1f; 这段时间都在更新有关python的文章&#xff0c;有对python感兴趣的朋友可以在主页找到。 但是这也并不是主要的原因 在10月5号我发布了我的第一篇博客&#xff0c;大家也可以看见我的每一篇算法博客…

【23真题】易!题源全部定位!带讲解!

今天分享的是23年长春理工大学808的信号与系统试题及解析。 本套试卷难度分析&#xff1a;22年长春理工808考研真题&#xff0c;我也发布过&#xff0c;若有需要&#xff0c;戳这里自取&#xff01;本套试题内容难度中等偏下&#xff0c;题量较少&#xff0c;没有选择填空题&a…

算法学习打卡day41|栈和队列:栈和队列相互实现、括号匹配、逆波兰表达式、滑动窗口最大值问题、求前 K 个高频元素

栈和队列相互实现 力扣题目链接&#xff1a;用栈实现队列、用队列实现栈 题目描述&#xff1a; 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(…

无人机航迹规划:狐猴优化算法LO求解无人机路径规划MATLAB(可以修改起始点,地图可自动生成)

一、狐猴优化算法 狐猴优化算法&#xff08;Lemurs Optimizer&#xff0c;LO&#xff09;由Ammar Kamal Abasi等人于2022年提出&#xff0c;该算法模拟狐猴的跳跃和跳舞行为&#xff0c;具有结构简单&#xff0c;思路新颖&#xff0c;搜索速度快等优势。狐猴优化算法&#xff…

JavaScript 进阶问题列表,巩固自己的知识。

不定时更新 JavaScript 进阶问题列表 从基础到进阶&#xff0c;测试你有多了解 JavaScript&#xff0c;刷新你的知识&#xff0c;或者帮助你的 coding 面试&#xff01; &#x1f4aa; &#x1f680; 答案❤️ 1. 输出是什么&#xff1f; function sayHi() {console.log(na…

iSlide2024一款基于PPT的插件工具包含38个设计辅助功能

根据使用者情况表明iSlide 是一款拥有30W素材的PPT高效设计软件&#xff0c;可提高90%工作效率&#xff0c;现全球已有超过1400万使用者&#xff0c;智能排版原创高品模板可商用图形&#xff0c;真正摆脱PPT的束缚&#xff0c;把精力用在该用的地方。我们都明白islide插件功能特…