【蓝桥杯第十三届C++B组】真题训练(5 / 8) - java写法

news2024/10/7 16:22:08

目录

4402.刷题统计 - 数学模拟

4403. 修剪灌木 - 思维

4404. X 进制减法 - 进制运算 + 贪心

4405. 统计子矩阵 - 前缀和 + 双指针​​​​​​​

1、一维前缀和

2、二维前缀和

4406. 积木画 - dp

1、找规律dp


4402.刷题统计 - 数学模拟

4402. 刷题统计 - AcWing题库

思路:

共n题,周一到周五5天刷a题,周六到周日2天刷b题

则一周7天刷5*a+2*b题

res+=n/(5*a+2*b)*7  //整周

剩下的题不到一周就能刷完

开辟一个数组存入一周的刷题数 day={a,a,a,a,a,b,b}

看最后还要x天能刷完

res+=x

import java.util.*;

class Main
{
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        long a=sc.nextLong(),b=sc.nextLong(),n=sc.nextLong();
        long x=a*5+b*2;
        long res=n/x*7;
        n%=x;
        long[] day={a,a,a,a,a,b,b};
        for(int i=0;n>0;i++)
        {
            n-=day[i];
            res++;
        }
        System.out.print(res);
    }
}

4403. 修剪灌木 - 思维

4403. 修剪灌木 - AcWing题库

思路:

灌木先长高再被修剪

比如第4棵,它刚刚被修剪完时高度为0

爱丽丝去修剪3时,其高度为1

去修剪2时,其高度为2

去修剪1时,其高度为3

去修剪2时,其高度为4

去修剪3时,其高度为5

因为先长高再修剪,所以在爱丽丝修剪4之前,4先长到最大高度6 

所以res就是max(i-1,n-i)*2

import java.util.*;

class Main
{
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        for(int i=1;i<=n;i++)
        {
            int x=Math.max(n-i,i-1);
            System.out.println(2*x);
        }
    }
}

4404. X 进制减法 - 进制运算 + 贪心

4404. X 进制减法 - AcWing题库

思路:

根据题目要求,X进制定义:每一位进制都不同

比如X进制数321  高位进制为8 第二位进制为10 低位进制为2

321_{X} = 3×10×2+2×2+1 = 65

解释:

  • 十位的2由个位进位2次得到,所以是2×2;
  • 百位的3由十位进位3次得到,十位又由个位进位得到,所以是3×10×2

由此可以得出:

  • X进制中第 i 位的权重是所有 j (0 ≤ j < i)位进制的乘积
  • 而转化为十进制的结果为:(每一位数×权重)之和
  • 所以要让A-B最小,也就是让权重最小,也就是让每一位的进制在合法的情况下最小

题目保证A≥B,A和B的位数可能不同,需要个位数对齐,高位补零

所以我们逆向存储,低位在前,高位在后

让每一位的进制在合法的情况下最小,合法情况:进制数≥该位上的数 且 不低于2进制

因此 每一位上的最小进制数=max(a[i]+1,b[i]+1,2)

然后计算每一位的权重,其中第一位权重为1,其余位权重等于之前位的权重之积

接着计算A值和B值(位数×权重 之和),输出A-B

import java.util.*;

class Main
{
    static int N=100010;
    static int mod=1000000007;
    static long[] a=new long[N],b=new long[N],jin=new long[N],w=new long[N]; //jin存每一位数的进制 w存每一位数的权重
    
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int ma=sc.nextInt();
        for(int i=ma;i>=1;i--) a[i]=sc.nextInt(); //若两数位数不同 逆序储存-低位在前高位在后能保证个位对齐
        int mb=sc.nextInt();
        for(int i=mb;i>=1;i--) b[i]=sc.nextInt();
        
        int m=Math.max(ma,mb);
        
        for(int i=1;i<=m;i++)
            jin[i]=Math.max(Math.max(a[i]+1,b[i]+1),2); //在合法范围内(进制数应该>该位上的数)的最小进制 最小进制不能低于2 

        w[1]=1; //第一位的权重为1
        for(int i=2;i<=m;i++) w[i]=w[i-1]*jin[i-1]%mod; //计算每一位的权重
        
        long A=0,B=0;
        for(int i=1;i<=ma;i++) A=(A+a[i]*w[i])%mod;
        for(int i=1;i<=mb;i++) B=(B+b[i]*w[i])%mod;
        
        System.out.print((A-B+mod)%mod);
    }
}

4405. 统计子矩阵 - 前缀和 + 双指针

4405. 统计子矩阵 - AcWing题库

1、一维前缀和

import java.util.*;

class Main
{
    static int N=510;
    static int[][] s=new int[N][N];
    
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt(),m=sc.nextInt(),k=sc.nextInt();
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++) 
            {
                s[i][j]=sc.nextInt();
                s[i][j]+=s[i-1][j]; //计算纵向的前缀和
            }
        
        long res=0;
        for(int i=1;i<=n;i++) //上界
            for(int j=i;j<=n;j++) //下界
                for(int l=1,r=1,sum=0;r<=m;r++) //双指针求左右两列
                {
                    sum+=s[j][r]-s[i-1][r];
                    while(sum>k)
                    {
                        sum-=s[j][l]-s[i-1][l];
                        l++;
                    }
                    res+=r-l+1;
                }
        System.out.print(res);
    }
}

2、二维前缀和

import java.util.*;

class Main
{
    static int N=510;
    static int[][] s=new int[N][N];
    
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt(),m=sc.nextInt(),k=sc.nextInt();
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++) 
            {
                s[i][j]=sc.nextInt();
                s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1]; 
            }
        
        long res=0;
        for(int i=1;i<=n;i++) //上界
            for(int j=i;j<=n;j++) //下界
                for(int l=1,r=1;r<=m;r++) //双指针求左右两列
                {
                    while(l<=r&&s[j][r]-s[j][l-1]-s[i-1][r]+s[i-1][l-1]>k) l++;
                    if(l<=r) res+=r-l+1;
                }
        System.out.print(res);
    }
}

4406. 积木画 - dp

4406. 积木画 - AcWing题库

1、找规律dp

import java.util.*;

class Main
{
    static int N=10000010;
    static int mod=1000000007;
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        long[] dp=new long[N];
        dp[1]=dp[0]=1;
        dp[2]=2;
        for(int i=3;i<=n;i++) dp[i]=(dp[i-1]*2+dp[i-3])%mod;
        System.out.print(dp[n]);
    }
}

 

4407. 扫雷 - 

4407. 扫雷 - AcWing题库

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

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

相关文章

素数(prime)总结

素数的介绍 素数定义 质数(prime number)又称素数&#xff0c;有无限个。一个大于1的自然数&#xff0c;除了1和它本身外&#xff0c;不能被其他自然数整除&#xff0c;换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。 根据算术基本定理&#xff0c;每一个…

linux 文件夹多用户共享 解决文件删除的Permission denied

linux文件属性基础 Linux文件属主和属组 通过命令ls 可以查看文件属性&#xff1a; zcargo-MS-7D53:~/Desktop/parent_ceshi$ ll -lh total 16K drwxrwxr-x 2 zc zc 4.0K 1月 10 13:59 ceshi/ drwxrwxr-x 2 zc zc 4.0K 1月 10 13:59 ceshi02/以上展示命令的意思&#xff1…

大数据概念及Hadoop介绍

大数据概念及Hadoop介绍大数据概念数据存储单位大数据定义大数据的特点(5V特征)大数据部门组织架构分布式技术负载均衡故障转移伸缩性分布式技术总结分布式和集群的区别Hadoop介绍Hadoop核心组件Hadoop发展简史Hadoop特性优点与行业应用Hadoop特性优点行业应用Hadoop发行版本及…

14、Java网络编程

一、 网络编程概述Java是 Internet 上的语言&#xff0c;它从语言级上提供了对网络应用程序的支持&#xff0c;程序员能够很容易开发常见的网络应用程序。Java提供的网络类库&#xff0c;可以实现无痛的网络连接&#xff0c;联网的底层细节被隐藏在 Java 的本机安装系统里&…

【广度优先搜索遍历 + 染色法】判断二分图

还记得当时才大一&#xff0c;上离散数学课&#xff0c;当时觉得很不屑&#xff0c;就是觉得这学的什么玩弄啥用没有&#xff0c;但是其实很多的算法思想在解决题目时很有价值。 本文就将使用染色法解决判断二分图问题&#xff0c;使用广度优先搜索遍历和 Java 语言实现 一、题…

车辆逆行识别检测系统 opencv

车辆逆行识别检测系统通过opencvyolo网络深度学习技术&#xff0c;对现场画面中车辆逆向行驶行为进行检测抓拍预警。 OpenCV的全称是Open Source Computer Vision Library&#xff0c;是一个跨平台的计算机视觉处理开源软件库&#xff0c;支持与计算机视觉和机器学习相关的众多…

嵌入式 LINUX 驱动开发 day02 字符设备驱动 字符设备驱动 虚拟串口, 一个驱动支持多个设备

1. 驱动开发 字符设备驱动 代码&#xff1a; vser.c #include <linux/init.h> #include <linux/kernel.h> #include <linux/module.h>#include <linux/fs.h> /***** 设备相关信息 ******/ static unsigned int VSER_MAJOR 256; //主设备号…

青铜到王者,9本最好的Python从入门到进阶的书

春节长假还有2周了&#xff0c;是时候囤一些书充充电了&#xff01;新的一年群里很多小伙伴开始想学Python&#xff0c; 无论是准备转行的&#xff0c;还是想多学一份技能提高职场竞争力的&#xff0c;都想选择Python赛道&#xff0c;下面给大家推荐一些非常不错的Python入门到…

【Flask框架】—— 30 Flask-RESTful

前后端分离和前后端不分离 前后端不分离 在前后端不分离的应用模式中&#xff0c;前端页面看到的效果都是由后端控制&#xff0c;由后端渲染页面或重定向&#xff0c;也就是后端需要控制前端的展示&#xff0c;前端与后端的耦合度很高。 这种应用模式比较适合纯网页应用&…

iclr 2022 Compositional attention: Disentangling search and retrieval

Mittal S, Raparthy S C, Rish I, et al. Compositional attention: Disentangling search and retrieval[J]. arXiv preprint arXiv:2110.09419, 2021. 目录Mittal S, Raparthy S C, Rish I, et al. Compositional attention: Disentangling search and retrieval[J]. arXiv p…

【Kettle报错】kettle7.0链接MySQL显示:No appropriate protocol

【Kettle7.0链接本地MySQL数据库报错】 1. 问题描述 报错问题&#xff1a;kettle7.0报错&#xff0c;提示No appropriate protocol (protocol is disabled or cipher suites are inappropriate) 错误原因&#xff1a; Caused by: javax.net.ssl.SSLHandshakeException: No a…

Vue实现路由(Vue-router,参数传递,编程式路由导航)

目录 路由是什么&#xff1f; 怎么实现路由 第一步 创建一个文件夹 router &#xff0c;里面创建一个index.js 内容是 第二步 在main.js中引入和应用 router 第三步 在Vue中 通过两个标签进行配置 跳转路由时的参数传递 query params query参数和 param参数的区别 编…

原型链和JSON

对象的封装、继承和多态 封装、继承和多态是面向对象编程的三大特征&#xff0c;在JavaScript中也可以使用这些特征来实现面向对象的的编程。 封装是指将对象的属性和方法封装在对象内部&#xff0c;只提供必要的接口给外部访问。封装可以让我们隐藏对象的实现细节&#xff0c;…

项目管理:制定项目进度计划的好处有哪些?

项目管理计划确定了项目执行、监控及结束项目的整个过程&#xff0c;在项目开始之前&#xff0c;如能制定清晰的计划&#xff0c;并让项目成员都了解项目的目标和自己的责任&#xff0c;会对项目的推进有很大的帮助。 制定项目进度计划的好处有哪些&#xff1f; 1、目标导向…

高级树结构之二叉查找树

文章目录一 二叉查找树简介二 创建和插入操作三 查找操作3.1 查找思路3.2 代码实现四 删除操作4.1 情况讨论4.2 代码实现五 完整代码5.1 二叉查找树的结构5.2 完整代码内容一 二叉查找树简介 二叉查找树【二叉搜索树或是二叉排序树】 左子树中所有结点的值&#xff0c;均小于其…

(十一)devops持续集成开发——jenkins流水线发布一个docker harbor仓库版的前端vue项目

前言 本节内容&#xff0c;我们使用jenkins的流水线功能发布一个docker harbor私服仓库版的前端vue项目&#xff0c;延续前一节的内容&#xff0c;这里需要我们事先安装好一个docker harbor仓库用来存放我们项目的镜像&#xff0c;前端项目依然是通过nginx基础镜像构建&#x…

关于时间复杂度什么是时间复杂度

文章目录简介常见的Big-Oh简介 精确的考虑程序运行时间会使得寸步难行&#xff0c;而且毫无意义&#xff0c;所以可以用一种“概量”的概念来衡量运行时间&#xff0c;称之为“时间复杂度”。 时间复杂度的定义&#xff1a; 在一个完全立项状态下的计算机中&#xff0c;我们定…

【Sql Server】数据库的表变量和临时表的区别,并通过变量表随机生成姓名

作者&#xff1a;小5聊 简介&#xff1a;一只喜欢全栈方向的程序员&#xff0c;欢迎咨询&#xff0c;尽绵薄之力答疑解惑 公众号&#xff1a;有趣小馆&#xff0c;一个有趣的关键词回复互动功能 效果 1、表变量 1.1、表变量基本信息 1&#xff09;表变量本质是一个变量 是SQ…

《啊哈算法》第一章典例+解析+代码

目录 一&#xff0c;计数排序 二&#xff0c;冒泡排序&#xff08;Bubble Sort&#xff09; 三&#xff0c;快速排序&#xff08;Quick Sort&#xff09; 四&#xff0c;桶排序&#xff08;Bucket Sort&#xff09; 五&#xff0c;小哼买书 从无到有掌握最基础的算法 多学…

react hooks 封装一个countDown 倒计时组件

开发技术 react , hooks , ts , taro 需求分析 需要一个可以按天&#xff0c;时&#xff0c;分和秒来进行倒计时的组件。 简单使用 注&#xff1a;主要逻辑请看 useCountDown import CountDown from /components/countDown; import { useEffect, useState } from react; i…