蓝桥杯备赛(持续更新)
16届蓝桥杯算法类知识图谱.pdf
1. 格式打印
%03d
:如果是两位数,将会在前面添上一位0
%.2f
:会保留两位小数
如果是long,必须在数字后面加上L
。
2. 进制转化
2.1. 十进制转任意进制:
十进制转任意进制时,将这个十进制数除以进制数,比如2(也就是十进制转二进制),得到商和一个从0~1的余数,然后再以这个商为被除数,除了进制数2,继续得到商和一个从0~1的余数。以此方式不断相除,直到得到的商为0为止。此时,得到若干个余数,把这些余数按从后到先的顺序排列起来,那么这个排列起来的值即为该十进制转换成二进制的值。计算如图所示:
最后得到的余数为二进制的非零的最高位,最先得到的余数为二进制的最低位,可知:十进制数9转换成二进制数为1001。
2.2. 任意进制转十进制:
任意进制转十进制时,以二进制数1001为例:该进制的最低位(右一)的值1就表示实际的十进制值1,次低位(右二)的值0表示进制数2的一次方的0倍即为0,次次低位(右三)的值0表示进制数2的二次方4的0倍即为0,最高位(左一)的值1表示进制数2的三次方8的1倍即为8,以此类推,将每位得到的十进制数相加得到9,该和即为二进制数1001对应的十进制数。计算如图所示:
3. 一维前缀和
- 快速求解某区间内的各种形式的和即可使用
- 使用迭代求和
sum[i]=sum[i-1]+num[i]
4. 一维差分
- bi = ai-ai-1
其中b1 = a1
- 如果
c
是b
的前缀和:即,ci = ci-1 + bi
- 那么
c
就是原数组a
4.1. 常见性质
- 差分数组都是0,说明原数组每个元素都相同
差分数组
的前缀和就是原数组
- 如果bl + d 与 br+1 - d同时作用,则
c
数组就是原数组ai+d
的结果 - 对差分的某一个位置减一等价于对原数组此位置及以后的位置减一
4.2. 特殊数列
数列: 1 4 10 20 35
对应的差分数列:1 3 6 10 15
差分数列是等差数列
5. 快读模板
static FastReader in = new FastReader(); // 创建一个静态的 FastReader 对象,用于处理输入
static PrintWriter out = new PrintWriter(System.out); // 创建一个静态的 PrintWriter 对象,用于输出数据// FastReader 类,用于处理高效的输入
static class FastReader {static BufferedReader br; // 静态的 BufferedReader,用于高效读取输入static StringTokenizer st; // 静态的 StringTokenizer,用于将输入字符串分割为标记// 构造函数,初始化 BufferedReader 以从标准输入读取数据FastReader() {br = new BufferedReader(new InputStreamReader(System.in)); // 使用 System.in 作为输入流初始化 BufferedReader}// next() 方法,返回下一个字符串标记String next() {String str = ""; // 定义一个空字符串,用于存储读取到的行// 如果 StringTokenizer 为 null 或没有更多标记可读取,读取新行while (st == null || !st.hasMoreElements()) {try {str = br.readLine(); // 使用 BufferedReader 读取一整行输入} catch (IOException e) { // 捕获可能的 I/O 异常throw new RuntimeException(e); // 如果发生异常,抛出运行时异常}st = new StringTokenizer(str); // 将读取到的行传递给 StringTokenizer 进行分割}return st.nextToken(); // 返回 StringTokenizer 的下一个标记}// nextInt() 方法,返回下一个整数输入int nextInt() {return Integer.parseInt(next()); // 使用 next() 方法读取字符串并转换为整数}// nextDouble() 方法,返回下一个双精度浮点数输入double nextDouble() {return Double.parseDouble(next()); // 使用 next() 方法读取字符串并转换为双精度浮点数}// nextLong() 方法,返回下一个长整数输入long nextLong() {return Long.parseLong(next()); // 使用 next() 方法读取字符串并转换为长整数}
}
- StringTokenizer 的分词作用 :
-
StringTokenizer
的作用是将一行输入拆分成多个标记,便于依次处理(比如单词或数字)。- 可以理解为:
st
是一个“分词器”,根据空格等分隔符来划分输入。
- 总结记忆方法:
-
- 输入原理:
BufferedReader
+StringTokenizer
= 快速读取并分词。 - 输出原理:
PrintWriter
= 快速输出。 - 类型方法:
next()
负责读取字符串标记,nextInt()
等方法负责类型转换。
- 输入原理:
6. 二维差分
二维差分是在一维差分的基础上推导的公式。
之前学过,差分数组的前缀和就是原数组
,由此进行推导即可。
使用 s
表示前缀和数组,a
表示原数组。
则:
s(i,j) = a(i,j) + s(i-1,j) + s(i,j-1) - s(i-1,j-1)
那么我们现在要求二维差分数组
,就:
- 将
原数组
看做差分数组
- 将
前缀和
看做原数组
具体原因见下图。
那么,我们要求差分(定为 b),就将差分移到左边(原式中的 a):
a(i,j) = s(i,j) - s(i-1,j) - s(i,j-1) + s(i-1,j-1)
更换为正确的字母后:
b(i,j) = a(i,j) - a(i-1,j) - a(i,j-1) + a(i-1,j-1)
上式就是二维差分的公式。
要求原数组的话,就将 b 求前缀和即可。
6.1. 二维数组对于某个区域加常数 c
使用二维差分数组。
b(x1,y1) += c;
b(x1,y2+1) -= c;
b(x2+1,y1) -= c;
b(x2+1,y2+1) += c;(多减了一次)
之后再对 b 数组求前缀和得到二维原数组。
1. 格式打印
%03d
:如果是两位数,将会在前面添上一位0
%.2f
:会保留两位小数
如果是long,必须在数字后面加上L
。
2. 进制转化
2.1. 十进制转任意进制:
十进制转任意进制时,将这个十进制数除以进制数,比如2(也就是十进制转二进制),得到商和一个从0~1的余数,然后再以这个商为被除数,除了进制数2,继续得到商和一个从0~1的余数。以此方式不断相除,直到得到的商为0为止。此时,得到若干个余数,把这些余数按从后到先的顺序排列起来,那么这个排列起来的值即为该十进制转换成二进制的值。计算如图所示:
最后得到的余数为二进制的非零的最高位,最先得到的余数为二进制的最低位,可知:十进制数9转换成二进制数为1001。
2.2. 任意进制转十进制:
任意进制转十进制时,以二进制数1001为例:该进制的最低位(右一)的值1就表示实际的十进制值1,次低位(右二)的值0表示进制数2的一次方的0倍即为0,次次低位(右三)的值0表示进制数2的二次方4的0倍即为0,最高位(左一)的值1表示进制数2的三次方8的1倍即为8,以此类推,将每位得到的十进制数相加得到9,该和即为二进制数1001对应的十进制数。计算如图所示:
3. 一维前缀和
- 快速求解某区间内的各种形式的和即可使用
- 使用迭代求和
sum[i]=sum[i-1]+num[i]
4. 一维差分
- bi = ai-ai-1
其中b1 = a1
- 如果
c
是b
的前缀和:即,ci = ci-1 + bi
- 那么
c
就是原数组a
4.1. 常见性质
- 差分数组都是0,说明原数组每个元素都相同
差分数组
的前缀和就是原数组
- 如果bl + d 与 br+1 - d同时作用,则
c
数组就是原数组ai+d
的结果 - 对差分的某一个位置减一等价于对原数组此位置及以后的位置减一
4.2. 特殊数列
数列: 1 4 10 20 35
对应的差分数列:1 3 6 10 15
差分数列是等差数列
5. 快读模板
static FastReader in = new FastReader(); // 创建一个静态的 FastReader 对象,用于处理输入
static PrintWriter out = new PrintWriter(System.out); // 创建一个静态的 PrintWriter 对象,用于输出数据// FastReader 类,用于处理高效的输入
static class FastReader {static BufferedReader br; // 静态的 BufferedReader,用于高效读取输入static StringTokenizer st; // 静态的 StringTokenizer,用于将输入字符串分割为标记// 构造函数,初始化 BufferedReader 以从标准输入读取数据FastReader() {br = new BufferedReader(new InputStreamReader(System.in)); // 使用 System.in 作为输入流初始化 BufferedReader}// next() 方法,返回下一个字符串标记String next() {String str = ""; // 定义一个空字符串,用于存储读取到的行// 如果 StringTokenizer 为 null 或没有更多标记可读取,读取新行while (st == null || !st.hasMoreElements()) {try {str = br.readLine(); // 使用 BufferedReader 读取一整行输入} catch (IOException e) { // 捕获可能的 I/O 异常throw new RuntimeException(e); // 如果发生异常,抛出运行时异常}st = new StringTokenizer(str); // 将读取到的行传递给 StringTokenizer 进行分割}return st.nextToken(); // 返回 StringTokenizer 的下一个标记}// nextInt() 方法,返回下一个整数输入int nextInt() {return Integer.parseInt(next()); // 使用 next() 方法读取字符串并转换为整数}// nextDouble() 方法,返回下一个双精度浮点数输入double nextDouble() {return Double.parseDouble(next()); // 使用 next() 方法读取字符串并转换为双精度浮点数}// nextLong() 方法,返回下一个长整数输入long nextLong() {return Long.parseLong(next()); // 使用 next() 方法读取字符串并转换为长整数}
}
- StringTokenizer 的分词作用 :
-
StringTokenizer
的作用是将一行输入拆分成多个标记,便于依次处理(比如单词或数字)。- 可以理解为:
st
是一个“分词器”,根据空格等分隔符来划分输入。
- 总结记忆方法:
-
- 输入原理:
BufferedReader
+StringTokenizer
= 快速读取并分词。 - 输出原理:
PrintWriter
= 快速输出。 - 类型方法:
next()
负责读取字符串标记,nextInt()
等方法负责类型转换。
- 输入原理:
6. 二维差分
二维差分是在一维差分的基础上推导的公式。
之前学过,差分数组的前缀和就是原数组
,由此进行推导即可。
使用 s
表示前缀和数组,a
表示原数组。
则:
s(i,j) = a(i,j) + s(i-1,j) + s(i,j-1) - s(i-1,j-1)
那么我们现在要求二维差分数组
,就:
- 将
原数组
看做差分数组
- 将
前缀和
看做原数组
具体原因见下图。
那么,我们要求差分(定为 b),就将差分移到左边(原式中的 a):
a(i,j) = s(i,j) - s(i-1,j) - s(i,j-1) + s(i-1,j-1)
更换为正确的字母后:
b(i,j) = a(i,j) - a(i-1,j) - a(i,j-1) + a(i-1,j-1)
上式就是二维差分的公式。
要求原数组的话,就将 b 求前缀和即可。
6.1. 二维数组对于某个区域加常数 c
使用二维差分数组。
b(x1,y1) += c;
b(x1,y2+1) -= c;
b(x2+1,y1) -= c;
b(x2+1,y2+1) += c;(多减了一次)
之后再对 b 数组求前缀和得到二维原数组。
相关文章:

蓝桥杯备赛(持续更新)
16届蓝桥杯算法类知识图谱.pdf 1. 格式打印 %03d:如果是两位数,将会在前面添上一位0 %.2f:会保留两位小数 如果是long,必须在数字后面加上L。 2. 进制转化 2.1. 十进制转任意进制: 十进制转任意进制时ÿ…...
k8s 学习笔记之 k8s 存储管理
文章目录 概述卷卷的常用类型emptyDir边车容器 HostPathnfsPV/PVC静态供给 PV 和 PVC创建静态 PV创建 pvc创建 pod 应用 pvc 动态供给 PV 和 PVC创建 StorageClass创建 pvc创建 pod 使用 pvc PV 的生命周期 内置存储对象ConfigMapSecret 配置文件自动重新加载方案**1. 应用内动…...
ios swift开发--ios远程推送通知配置
远程推送通知(Push Notifications)在 iOS 平台上是免费提供的,但需要一些准备工作。以下是开通和使用远程推送通知的基本步骤: 开通远程推送通知 注册 Apple Developer Program: 访问 Apple Developer 并注册一个开发…...

【JavaEE进阶】CSS
本节⽬标 掌握 CSS 基本语法规范和CSS选择器的各种⽤法, 熟练使⽤CSS的常⽤属性. 一.CSS介绍 1.什么是CSS? CSS(Cascading Style Sheet),层叠样式表, ⽤于控制⻚⾯的样式. CSS 能够对⽹⻚中元素位置的排版进⾏像素级精确控制, 实现美化⻚⾯的效果. 能够做到⻚⾯…...

基于Java Springboot宠物领养救助平台
一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…...
C/C++ 中有哪些类型转换方式? 分别有什么区别?
在C编写C/C代码的时候,我们经常会遇到发生类型转换的场景,比如 赋值运算符的两个操作数不同、实参和形参类型不同、函数返回值类型和接收返回值的类型不同,都会发生类型转换;所以,在C语言中提供了两种类型转换 —— 隐…...

小程序租赁系统开发为企业提供高效便捷的租赁服务解决方案
内容概要 在这个数字化飞速发展的时代,小程序租赁系统应运而生,成为企业管理租赁业务的一种新选择。随着移动互联网的普及,越来越多的企业开始关注如何利用小程序来提高租赁服务的效率和便捷性。小程序不仅可以为用户提供一个快速、易用的平…...
Scala的Array
数组:物理空间上连续的(一个挨一个) 优势:根据下标,能快速找到元素 列表:物理空间上不连续(不是一个元素挨着一个元素) 优势:插入元素,删除比较快 object…...
等保测评怎么做?具体流程是什么?
等保测评是对信息系统进行等保(等级保护)安全评测的过程。等保是指对信息系统进行等级化保护管理,目的是提高信息系统的安全性,防止信息泄露、篡改、破坏等安全问题。哈尔滨等保测评按照《中华人民共和国网络安全法》及《信息安全…...

基于YOLOv8深度学习的汽车车身车损检测系统研究与实现(PyQt5界面+数据集+训练代码)
本文研究并实现了一种基于YOLOV8深度学习模型的汽车车身车损检测系统,旨在解决传统车损检测中效率低、精度不高的问题。该系统利用YOLOV8的目标检测能力,在单张图像上实现了车身损坏区域的精确识别和分类,尤其是在车身凹痕、车身裂纹和车身划…...

力扣 LeetCode 144. 二叉树的前序遍历(Day6:二叉树)
解题思路: 方法一:递归(中左右) class Solution {List<Integer> res new ArrayList<>();public List<Integer> preorderTraversal(TreeNode root) {recur(root);return res;}public void recur(TreeNode roo…...
Adobe Illustrator(Ai)修图软件入门操作参考,收集查过的各个细节用法
到现在,对于Ai的使用也是一半一半,基本上都是用到啥就查啥。因为用得也不是很频繁,脑子也记不住很多操作,所以有时候靠肌肉记忆,很多时候,得再百度一遍…… 所以 我在这再备份一下,做个搬运工 …...
Apache Paimon、Apache Hudi、Apache Iceberg对比分析
Apache Paimon、Apache Hudi、Apache Iceberg 都是面向大数据湖的表格式存储管理框架。它们各自的架构、数据管理方式以及适用场景有所不同。下面是对三者的详细对比分析: 1. 基本简介 Apache Paimon: Paimon 是一个新兴的数据湖存储引擎,旨在支持流批一体的数据处理和管理…...

[ 网络安全介绍 5 ] 为什么要学习网络安全?
🍬 博主介绍 👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…...

生产环境centos8 Red Hat8部署ansible and 一键部署mysql两主两从ansible脚本预告
一、各节点服务器创建lvm逻辑卷组 1.初始化磁盘为物理卷(PV) 命令:sudo pvcreate /dev/vdb 2.创建卷组(VG) 命令:sudo vgcreate db_vg /dev/vdb 3.创建逻辑卷(LV) 命令:s…...

华为云stack网络服务流量走向
1.同VPC同子网同主机内ECS间互访流量走向 一句话通过主机内部br-int通信 2.同VPC同子网跨主机ECS间互访流量走向 3.同VPC不同子网同主机ECS间互访流量走向 查看ECS配置文件底层KVM技术 查看日志 查看ECS的ID号(管理员身份查询所有租户信息) 查看ECS的其…...

嵌入式硬件杂谈(二)-芯片输入接入0.1uf电容的本质(退耦电容)
引言:对于嵌入式硬件这个庞大的知识体系而言,太多离散的知识点很容易疏漏,因此对于这些容易忘记甚至不明白的知识点做成一个梳理,供大家参考以及学习,本文主要针对芯片输入接入0.1uf电容的本质的知识点的进行学习。 目…...

计算机网络HTTP——针对实习面试
目录 计算机网络HTTP什么是HTTP?HTTP和HTTPS有什么区别?分别说明HTTP/1.0、HTTP/2.0、HTTP/3.0请说明访问网页的全过程请说明HTTP常见的状态码Cookie和Session有什么区别?HTTP请求方式有哪些?请解释GET和POST的区别?HT…...
JAVA中对象实体与对象引用有何不同?举例说明
在 Java 中,对象实体(Object instance)和对象引用(Object reference)是两个不同的概念,虽然它们通常被一起讨论,但它们的作用和表现方式是不同的。下面我们来详细说明这两者的区别。 1. 对象实体…...
C++设计思想-001-设计模式-单例模式
1.单例模式优点 保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享; 实现: 1.1 单例模式的类只提供私有的构造函数 1.2类定义中含有一个该类的静态私有对象 1.3该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象 2.单…...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...