蓝桥杯备赛(持续更新)


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. 一维前缀和

  1. 快速求解某区间内的各种形式的和即可使用
  2. 使用迭代求和
sum[i]=sum[i-1]+num[i]

4. 一维差分

  1. bi = ai-ai-1

其中b1 = a1

  1. 如果cb的前缀和:即,ci = ci-1 + bi
  2. 那么c就是原数组a

4.1. 常见性质

  1. 差分数组都是0,说明原数组每个元素都相同
  2. 差分数组的前缀和就是原数组
  3. 如果bl + d 与 br+1 - d同时作用,则c数组就是原数组ai+d的结果
  4. 对差分的某一个位置减一等价于对原数组此位置及以后的位置减一

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() 方法读取字符串并转换为长整数}
}
  1. StringTokenizer 的分词作用
    • StringTokenizer 的作用是将一行输入拆分成多个标记,便于依次处理(比如单词或数字)。
    • 可以理解为:st 是一个“分词器”,根据空格等分隔符来划分输入。
  1. 总结记忆方法:
    1. 输入原理BufferedReader + StringTokenizer = 快速读取并分词。
    2. 输出原理PrintWriter = 快速输出。
    3. 类型方法next() 负责读取字符串标记,nextInt() 等方法负责类型转换。

6. 二维差分

二维差分是在一维差分的基础上推导的公式。

之前学过,差分数组的前缀和就是原数组,由此进行推导即可。

使用 s表示前缀和数组,a表示原数组。

则:

s(i,j) = a(i,j) + s(i-1,j) + s(i,j-1) - s(i-1,j-1)

那么我们现在要求二维差分数组,就:

  1. 原数组看做差分数组
  2. 前缀和看做原数组

具体原因见下图。

那么,我们要求差分(定为 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. 一维前缀和

  1. 快速求解某区间内的各种形式的和即可使用
  2. 使用迭代求和
sum[i]=sum[i-1]+num[i]

4. 一维差分

  1. bi = ai-ai-1

其中b1 = a1

  1. 如果cb的前缀和:即,ci = ci-1 + bi
  2. 那么c就是原数组a

4.1. 常见性质

  1. 差分数组都是0,说明原数组每个元素都相同
  2. 差分数组的前缀和就是原数组
  3. 如果bl + d 与 br+1 - d同时作用,则c数组就是原数组ai+d的结果
  4. 对差分的某一个位置减一等价于对原数组此位置及以后的位置减一

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() 方法读取字符串并转换为长整数}
}
  1. StringTokenizer 的分词作用
    • StringTokenizer 的作用是将一行输入拆分成多个标记,便于依次处理(比如单词或数字)。
    • 可以理解为:st 是一个“分词器”,根据空格等分隔符来划分输入。
  1. 总结记忆方法:
    1. 输入原理BufferedReader + StringTokenizer = 快速读取并分词。
    2. 输出原理PrintWriter = 快速输出。
    3. 类型方法next() 负责读取字符串标记,nextInt() 等方法负责类型转换。

6. 二维差分

二维差分是在一维差分的基础上推导的公式。

之前学过,差分数组的前缀和就是原数组,由此进行推导即可。

使用 s表示前缀和数组,a表示原数组。

则:

s(i,j) = a(i,j) + s(i-1,j) + s(i,j-1) - s(i-1,j-1)

那么我们现在要求二维差分数组,就:

  1. 原数组看做差分数组
  2. 前缀和看做原数组

具体原因见下图。

那么,我们要求差分(定为 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 数组求前缀和得到二维原数组。

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

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

相关文章

【STL】set,multiset,map,multimap的介绍以及使用

关联式容器 在C的STL中包含序列式容器和关联式容器 1.关联式容器:它里面存储的是元素本身,其底层是线性序列的数据结构,比如:vector,list,deque,forward_list(C11)等 2.关联式容器里面储存的…

螺旋矩阵II(leetcode 59)

转圈过程&#xff08;边界处理&#xff09;遵循循环不变量的原则&#xff0c;坚持一个原则处理每一条边&#xff0c;左闭右开处理 class Solution { public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>> num(n, vector<int>…

MCU的时钟体系

stm32F4的时钟体系图 1MHZ 10^6 HZ 系统时钟频率是168MHZ;AHB1、AHB2、AHB3总线上的时钟频率是168MHz;APB1总线上的时钟频率为42MHz&#xff1b;APB2总线上的时钟频率为84MHz&#xff1b; stm32F4的时钟体系图 在system_stm32f4xx.c文件中查看APB1和APB2的预分频值到底是多少…

走进嵌入式开发世界

目录 一、概述 二、嵌入式开发的核心要素 2.1. 硬件平台选择与设计 2.1.1. 处理器选择 2.1.2. 电路设计 2.1.3.硬件集成与测试 2.2. 软件开发与调试 2.2.1. 编程语言选择 2.2.2. 操作系统与中间件 2.2.3. 软件架构与模块化设计 2.2.4. 调试与测试 三、系统优化与功…

SpringCloud篇(服务网关 - GateWay)

目录 一、简介 二、为什么需要网关 二、gateway快速入门 1. 创建gateway服务&#xff0c;引入依赖 2. 编写启动类 3. 编写基础配置和路由规则 4. 重启测试 5. 网关路由的流程图 6. 总结 三、断言工厂 四、过滤器工厂 1. 路由过滤器的种类 2. 请求头过滤器 3. 默认…

技术理论||02空中三角测量

空中三角测量指的是根据少量控制点坐标,利用空间前后交汇,对六个外方位要素进行解算,从而获得大量未知点坐标及图像外方位要素。空三测量精度是整个摄影测量过程中的关键环节,空三解算的精度直接影响到数字正射图像、实景三维模型等数字化成果的质量。在空三加密的平差解算中,主…

OpenTelemetry 赋能DevOps流程的可观测性革命

作者&#xff1a;天颇 引言 在当今快节奏的软件开发和运维环境中&#xff0c;DevOps 已经成为主流&#xff0c;它通过整合开发和运维流程&#xff0c;推动着软件的快速迭代和持续交付。然而&#xff0c;随着微服务、容器化和云计算等技术的普及&#xff0c;系统复杂性急剧增加…

大数据如何助力干部选拔的公正性

随着社会的发展和进步&#xff0c;干部选拔成为组织管理中至关重要的一环。传统的选拔方式可能存在主观性、不公平性以及效率低下等问题。大数据技术的应用&#xff0c;为干部选拔提供了更加全面、精准、客观的信息支持&#xff0c;显著提升选拔工作的科学性和公正性。以下是大…

风电电力系统低碳调度论文阅读第一期

在碳交易市场中&#xff0c;历史法和基准线法是用于分配碳排放配额的两种主要方法。以下是两种方法的公式及其解释&#xff1a; 区别总结 历史法&#xff1a;基于历史排放量&#xff0c;分配具有较强的公平性但可能缺乏激励减排。基准线法&#xff1a;基于行业基准和生产量&am…

PHP代码审计 --MVC模型开发框架rce示例

MVC模型开发框架 控制器Controller&#xff1a;负责响应用户请求、准备数据&#xff0c;及决定如何展示数据 模块Model&#xff1a;管理业务逻辑和数据库逻辑&#xff0c;提供链接和操作数据库的抽象层 视图View&#xff1a;负责前端模板渲染数据&#xff0c;通过html呈现给用户…

RT-Thread 星火1号学习笔记

LED 闪烁例程 硬件说明 LED 连接在开发板的某个 GPIO 端口上&#xff0c;通过控制该端口的高低电平来实现 LED 的亮灭。 软件说明 初始化 GPIO 端口 /* 配置 LED 灯引脚 */ #define PIN_LED_B GET_PIN(F, 11) // PF11 : LED_B --> LED #defi…

c++调用 c# dll 通过 clr (详细避坑)

项目场景&#xff1a; .NET Framework 4.7.2 需要在纯C项目中调用C# 的DLL C# DLL 在.NET core 或者 .NET 8 中无法使用AOT正常导出DLL 解决方案&#xff1a; 通过 用 C/clr 项目中转 来调用 1.在c# .NET Framework项目中把接口写好&#xff0c; 这里不推荐使用 .NET 8&#…

【动手学深度学习Pytorch】1. 线性回归代码

零实现 导入所需要的包&#xff1a; # %matplotlib inline import random import torch from d2l import torch as d2l import matplotlib.pyplot as plt import matplotlib import os构造人造数据集&#xff1a;假设w[2, -3.4]&#xff0c;b4.2&#xff0c;存在随机噪音&…

论文笔记(五十六)VIPose: Real-time Visual-Inertial 6D Object Pose Tracking

VIPose: Real-time Visual-Inertial 6D Object Pose Tracking 文章概括摘要I. INTRODACTIONII. 相关工作III. APPROACHA. 姿态跟踪工作流程B. VIPose网络 文章概括 引用&#xff1a; inproceedings{ge2021vipose,title{Vipose: Real-time visual-inertial 6d object pose tra…

web——upload-labs——第三关——后缀黑名单绕过

上传一个正常的一句话木马&#xff0c;判断一下验证类型 响应后返回提示不允许上传.asp,.aspx,.php,.jsp后缀文件&#xff01; 且查看网页源代码中并没有前端验证机制&#xff0c;所以可以判断这道题是后端验证 使用burp 提示无法上传.php结尾的文件&#xff0c;但我们的一句…

LeetCode题解:18.四数之和【Python题解超详细】,三数之和 vs. 四数之和

题目描述 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元组元素一一对应&#xff0c;则认为两个四元组重复&#xff09;&#xff1a; …

如何利用SAP低代码平台快速构建企业级应用?

SAP作为全球领先的企业管理软件解决方案提供商&#xff0c;一直致力于为企业提供全面且高效的业务管理工具。随着技术的快速发展&#xff0c;传统的开发方式已经无法满足企业在快速变化的市场环境下的需求。低代码开发平台应运而生&#xff0c;它通过简化应用程序的创建过程&am…

Redis基础篇

文章目录 1.Redis的引入2.单机和分布式3.读写分离4.缓存服务器5.微服务 1.Redis的引入 我们的这个redis就是对于这个内存数据进行存储的&#xff0c;和我们的这个变量的这个性质是一样的&#xff0c;但是我们的这个redis主要是应用于这个分布式的这个系统上面的&#xff0c;如…

C++11(四)---可变参数模板

文章目录 可变参数模板 可变参数模板 参数包代表多个类型和参数 // Args是一个模板参数包&#xff0c;args是一个函数形参参数包 // 声明一个参数包Args...args&#xff0c;这个参数包中可以包含0到任意个模板参数。 template <class ...Args> void ShowList(Args... arg…

基于Springboot+Vue的中国蛇类识别系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 这个系…