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

【HT周赛】T3.二维平面 题解(分块:矩形chkmax,求矩形和)

题意

需要维护 n × n n \times n n×n 平面上的整点,每个点 ( x , y ) (x, y) (x,y) 有权值 V ( x , y ) V(x, y) V(x,y),初始都为 0 0 0

同时给定 n n n 次修改操作,每次修改给出 x 1 , x 2 , y 1 , y 2 , v x_1, x_2, y_1, y_2, v x1,x2,y1,y2,v,对每个满足 x 1 ≤ x ≤ x 2 , y 1 ≤ y ≤ y 2 x_1 \leq x \leq x_2, y_1 \leq y \leq y_2 x1xx2,y1yy2 ( x , y ) (x, y) (x,y),将 V ( x , y ) V(x, y) V(x,y) 修改为 max ⁡ ( V ( x , y ) , v ) \max(V(x, y), v) max(V(x,y),v)

在所有修改操作进行完后,有 m m m 次查询操作,每次给出 x 1 , x 2 , y 1 , y 2 x_1, x_2, y_1, y_2 x1,x2,y1,y2,查询 ∑ x = x 1 x 2 ∑ y = y 1 y 2 V ( x , y ) \sum\limits_{x = x_1}^{x_2}\sum\limits_{y = y_1}^{y_2} V(x, y) x=x1x2y=y1y2V(x,y)

1 ≤ n , m ≤ 2 × 1 0 5 1 \leq n,m \leq 2 \times 10^5 1n,m2×105
1 ≤ x 1 ≤ x 2 ≤ n , 1 ≤ y 1 ≤ y 2 ≤ n , 1 ≤ v ≤ n 1 \leq x_1 \leq x_2 \leq n, 1 \leq y_1 \leq y_2 \leq n, 1 \leq v \leq n 1x1x2n,1y1y2n,1vn

分析

本题需要我们实现 矩形 c h k m a x chkmax chkmax,求矩形和

首先定义水平方向从左到右 x x x 递增, 竖直方向自上到下 y y y 递增。

一般的 离线矩形操作 是通过 矩形扫描线 解决的。比如 矩形加, 求矩形和,可以通过扫描线维护历史版本和的方法在 O ( n log ⁡ n ) O(n \log n) O(nlogn) 的复杂度内求出答案。但是对于 c h k m a x chkmax chkmax 操作,它很难撤销并且维护矩阵也比较困难。因次矩形扫描线是行不通的。

考虑 分块
具体来说,设阈值为 B B B,将 x x x 轴按照 B B B 为段长分成若干 B × n B \times n B×n 的细长矩形,对这 n B \frac{n}{B} Bn 个细长矩形分别考虑所有修改的影响以及所有查询在这一部分内的答案。

将与当前处理的细长矩形有交的 询问矩形和修改矩形 分成两类: x x x 坐标完全跨过当前矩形的 和 x x x 坐标不完全跨过的。如下图所示:
在这里插入图片描述
在这里插入图片描述

第二类矩形 上下边界的 y y y 坐标取出来进行离散化。那么会得到一个 B × c B \times c B×c 的网格,其中 c c c 表示第二类矩形的数量。

由于一个修改/查询矩形最多会在两个块内作为第二类矩形,因此所有 c c c 的和为 O ( m ) O(m) O(m),得到的总网格数为 O ( B m ) O(Bm) O(Bm)

考虑此时怎么维护修改和查询:对于第二类矩形,修改/查询的范围对应了网格图上的一个矩形。对于第一类矩形,修改/查询的范围对应了离散化前 y y y 坐标上连续的若干行(注意因为我们没有离散化第一类矩形的 y y y 坐标,所以这些 y y y 可能并不能对应网格图上的一个 y ′ y' y)。

由于第一类矩形的存在,仅有一张网格图是不够的。考虑同时维护一个长为 n n n 的数组 A A A 表示将 B B B 列压缩成一列后的每一行。我们希望能够维护出所有修改操作后 网格图上每个格子的权值 以及 A A A 数组每个位置的权值,这样只需要在网格图上求一遍二位前缀和,对 A A A 数组求一遍前缀和,就可以 O ( 1 ) O(1) O(1) 回答出所有询问的答案。

将所有修改矩形按照 v v v 从大到小排序,那么 c h k m a x chkmax chkmax 就变成了覆盖
我们发现所有细长矩形中 网格的总数和 A A A 的长度之和为 O ( B m + n 2 B ) O(Bm + \frac{n^2}{B}) O(Bm+Bn2),取 B = n m B = \frac{n}{\sqrt{m}} B=m n,可以得到 O ( B m + n 2 B ) = O ( n m ) O(Bm + \frac{n^2}{B}) = O(n\sqrt{m}) O(Bm+Bn2)=O(nm ),那么暴力覆盖就是对的。

我们对网格图的 B B B 列维护一个长度为 c c c 的并查集,同时对 A A A 维护一个长为 n n n 的并查集,染色过程中跳过之前已经被染过色的位置。考虑如何计算答案:如果要染色一行,那么我们需要知道这一行对应到的网格图的某一行已经被染色的格子数量,以及覆盖这些格子的权值之和。如果要染色一个格子,我们需要知道这个格子的 y ′ y' y 对应到原来的 y y y 的一段区间中,有多少行已经被染色,以及行染色的权值之和。这些信息都可以在染色一行或一个格子时维护。

最后需要将所有没染色的格子和行求出它们现在的权值和。(因为会受到另一种覆盖的影响)
然后求一遍前缀和即可。复杂度 O ( m n ) O(m\sqrt{n}) O(mn )

// 矩形 chkmax, 矩形求和 
#include<bits/stdc++.h>
#define pb emplace_back
using namespace std;
struct IO{static const int S=1<<21;char buf[S],*p1,*p2;int st[105],Top;~IO(){clear();}inline void clear(){fwrite(buf,1,Top,stdout);Top=0;}inline void pc(const char c){Top==S&&(clear(),0);buf[Top++]=c;}inline char gc(){return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++;}inline IO&operator >> (char&x){while(x=gc(),x==' '||x=='\n'||x=='\r');return *this;}template<typename T>inline IO&operator >> (T&x){x=0;bool f=0;char ch=gc();while(!isdigit(ch)){if(ch=='-') f^=1;ch=gc();}while(isdigit(ch)) x=(x<<3)+(x<<1)+ch-'0',ch=gc();f?x=-x:0;return *this;}inline IO&operator << (const char c){pc(c);return *this;}template<typename T>inline IO&operator << (T x){if(x<0) pc('-'),x=-x;do{st[++st[0]]=x%10,x/=10;}while(x);while(st[0]) pc('0'+st[st[0]--]);return *this;}
}fin, fout;
const int N = 2e5 + 10;
const int M = 205;
typedef long long LL;
struct OP {int lx, rx, ly, ry, v;friend bool operator < (OP a, OP b) {return a.v > b.v;}
} opt[N * 2];
struct Union {int n, bin[N];int Find(int x) {return x == bin[x] ? x : bin[x] = Find(bin[x]);}inline void init(int _n) {n = _n; for(int i = 1; i <= n; i ++ ) bin[i] = i;}inline void Merge(int x) {if(x != n) bin[x] = Find(x + 1);}// 将 x 和它的下一个合并 inline int nxt(int x) {return Find(x + 1);}
} L[M], U;
int n, m, tmp[N * 2], tot;
int Y[N], bel[N], cnt;
bool exs[N];
LL ans[N], mp[M][N], sum[N], S1[N], C1[N], S2[N], C2[N]; // S1, C1 是网格染色的信息。 S2, C2 是行染色的信息 
inline void solve(int l, int r) { // 首先先把散块修改和询问的 y 坐标离散化	vector< int > pos;exs[0] = exs[n] = 1; tot = 0; cnt = 0; int st = -1;for(int i = 1; i <= n + m; i ++ ) {if(opt[i].rx < l || opt[i].lx > r) continue;tmp[++ tot] = i;if(opt[i].lx <= l && opt[i].rx >= r) ;else exs[opt[i].ly - 1] = exs[opt[i].ry] = 1;if(opt[i].v == 0) st = (st == -1 ? tot : st);}if(st == -1) return ;int lst = 0;for(int i = 0; i <= n; i ++ ) {bel[i] = lst;if(exs[i]) pos.pb(i), Y[++ cnt] = i, lst ++; // 离散化所有纵坐标 }for(int i = 1; i <= r - l + 1; i ++ ) L[i].init(cnt); // 第 i 个距离是 Y_{i + 1} - Y_i for(int i = 1; i < cnt; i ++ ) S1[i] = C1[i] = S2[i] = C2[i] = 0;U.init(n + 1);for(int i = 1; i <= tot; i ++ ) {int o = tmp[i];if(!opt[o].v) break;if(opt[o].lx <= l && opt[o].rx >= r) { // 染一行 for(int j = U.Find(opt[o].ly); j <= opt[o].ry; j = U.nxt(j)) {sum[j] = S1[bel[j]] + ((r - l + 1) - C1[bel[j]]) * opt[o].v;C2[bel[j]] ++; S2[bel[j]] += opt[o].v;U.Merge(j);}}else { // 染若干格子 for(int x = max(l, opt[o].lx) - l + 1; x <= min(r, opt[o].rx) - l + 1; x ++ ) {for(int j = L[x].Find(bel[opt[o].ly]); j <= bel[opt[o].ry]; j = L[x].nxt(j)) {mp[x][j] = S2[j] + (Y[j + 1] - Y[j] - C2[j]) * opt[o].v;C1[j] ++; S1[j] += opt[o].v;L[x].Merge(j);}}}}// 接下来确定还没染色的所有格子 for(int i = 1; i <= r - l + 1; i ++ ) for(int j = 1; j < cnt; j ++ ) {if(L[i].Find(j) == j) mp[i][j] = S2[j];mp[i][j] = mp[i - 1][j] + mp[i][j - 1] + mp[i][j] - mp[i - 1][j - 1];}for(int i = 1; i <= n; i ++ ) {if(U.Find(i) == i) sum[i] = S1[bel[i]];sum[i] += sum[i - 1];}	for(int i = st; i <= tot; i ++ ) { // 处理所有询问 int o = tmp[i];if(opt[o].lx <= l && opt[o].rx >= r) ans[o - n] += sum[opt[o].ry] - sum[opt[o].ly - 1];else {int lx = max(opt[o].lx, l) - l + 1, rx = min(opt[o].rx, r) - l + 1, ly = bel[opt[o].ly], ry = bel[opt[o].ry];ans[o - n] += mp[rx][ry] - mp[rx][ly - 1] - mp[lx - 1][ry] + mp[lx - 1][ly - 1];}}for(auto v : pos) exs[v] = 0;
}
int main() {fin >> n >> m;for(int i = 1; i <= n; i ++ ) fin >> opt[i].lx >> opt[i].rx >> opt[i].ly >> opt[i].ry >> opt[i].v;for(int i = 1; i <= m; i ++ ) fin >> opt[i + n].lx >> opt[i + n].rx >> opt[i + n].ly >> opt[i + n].ry;stable_sort(opt + 1, opt + n + m + 1);int B = min((int)sqrt(n), 200);for(int i = 1; i <= n; i += B ) solve(i, min(i + B - 1, n));for(int i = 1; i <= m; i ++ ) fout << ans[i], fout.pc('\n');return 0;
}

相关文章:

【HT周赛】T3.二维平面 题解(分块:矩形chkmax,求矩形和)

题意 需要维护 n n n \times n nn 平面上的整点&#xff0c;每个点 ( x , y ) (x, y) (x,y) 有权值 V ( x , y ) V(x, y) V(x,y)&#xff0c;初始都为 0 0 0。 同时给定 n n n 次修改操作&#xff0c;每次修改给出 x 1 , x 2 , y 1 , y 2 , v x_1, x_2, y_1, y_2, v x…...

目标检测任务常用脚本1——将YOLO格式的数据集转换成VOC格式的数据集

在目标检测任务中&#xff0c;不同框架使用的标注格式各不相同。常见的框架中&#xff0c;YOLO 使用 .txt 文件进行标注&#xff0c;而 PASCAL VOC 则使用 .xml 文件。如果你需要将一个 YOLO 格式的数据集转换为 VOC 格式以便适配其他模型&#xff0c;本文提供了一个结构清晰、…...

2025深圳杯D题法医物证多人身份鉴定问题四万字思路

Word版论文思路和千行Python代码下载&#xff1a;https://www.jdmm.cc/file/2712074/ 引言 法医遗传学中的混合生物样本分析&#xff0c;特别是短串联重复序列&#xff08;Short Tandem Repeat, STR&#xff09;分型结果的解读&#xff0c;是现代刑事侦查和身份鉴定领域的核心…...

利用自适应双向对比重建网络与精细通道注意机制实现图像去雾化技术的PyTorch代码解析

利用自适应双向对比重建网络与精细通道注意机制实现图像去雾化技术的PyTorch代码解析 漫谈图像去雾化的挑战 在计算机视觉领域&#xff0c;图像复原一直是研究热点。其中&#xff0c;图像去雾化技术尤其具有实际应用价值。然而&#xff0c;复杂的气象条件和多种因素干扰使得这…...

Focal Loss 原理详解及 PyTorch 代码实现

Focal Loss 原理详解及 PyTorch 代码实现 介绍一、Focal Loss 背景二、代码逐行解析1. 类定义与初始化 三、核心参数作用四、使用示例五、应用场景六、总结 介绍 一、Focal Loss 背景 Focal Loss 是为解决类别不平衡问题设计的损失函数&#xff0c;通过引入 gamma 参数降低易…...

VScode 的插件本地更改后怎么生效

首先 vscode 的插件安装地址为 C:\Users\%USERNAME%\.vscode\extensions 找到你的插件包进行更改 想要打印日志&#xff0c;用下面方法 vscode.window.showErrorMessage(console.log "${name}" exists.); 打印结果 找到插件&#xff0c;点击卸载 然后点击重新启动 …...

这类物种组织heatmap有点东西

如果想知道研究对象&#xff08;人、小鼠、拟南芥、恒河猴等​​&#xff09;某个时候各个器官的fMRI信号强度、炎症程度等指标的差异&#xff0c;gganatogram可以以热图的形式轻松满足你的需求。 数据准备 以男性为例&#xff0c;数据包含四列&#xff0c; 每列详细介绍 org…...

通讯录程序

假设通讯录可以存放100个人的信息&#xff08;人的信息&#xff1a;姓名、年龄、性别、地址、电话&#xff09; 功能&#xff1a;1>增加联系人 2>删除指定联系人 3>查找指定联系人信息 4>修改指定联系人信息 5>显示所有联系人信息 6>排序&#xff08;…...

无需翻墙!3D 优质前端模板分享

开发网站时&#xff0c;无需撰写 HTML、CSS 和 JavaScript 代码&#xff0c;直接调用模板内现成的组件&#xff0c;通过拖拽组合、修改参数&#xff0c;几天内即可完成核心页面开发&#xff0c;开发速度提升高达 70% 以上。让开发者更专注于业务逻辑优化与功能创新&#xff0c;…...

Shinkai开源程序 是一个双击安装 AI 管理器(本地和远程),它允许您使用简单的 UI 在 5 分钟或更短的时间内创建 AI 代理

​一、软件介绍 文末提供程序和源码下载 Shinkai 开源应用程序在 Web 浏览器中解锁了一流 LLM &#xff08;AI&#xff09; 支持的全部功能/自动化。它允许创建多个代理&#xff0c;每个代理都连接到本地或第三方LLMs&#xff08;例如 OpenAI GPT&#xff09;&#xff0c;这些…...

vscode不能跳转到同一个工作区的其他文件夹

明白了&#xff0c;你说的“第二种情况”是指&#xff1a; 你先打开的是项目文件夹&#xff08;比如 MyProject&#xff09;&#xff0c;然后通过 VS Code 的“添加文件夹到工作区”功能&#xff0c;把 ThirdPartyLib 文件夹添加进来。 结果&#xff0c;项目代码里 #include “…...

containerd 之使用 ctr 和 runc 进行底层容器操作与管理

containerd 是目前业界标准的容器运行时&#xff0c;它负责容器生命周期的方方面面&#xff0c;如镜像管理、容器执行、存储和网络等。而 ctr 是 containerd 自带的命令行工具&#xff0c;虽然不如 Docker CLI 用户友好&#xff0c;但它提供了直接与 containerd API 交互的能力…...

IMU 技术概述

IMU&#xff08;惯性测量单元&#xff0c;Inertial Measurement Unit&#xff09;是一种通过传感器组合测量物体运动状态和姿态的核心设备&#xff0c;广泛应用于导航、控制、智能设备等领域。以下从原理、组成、应用和发展趋势展开说明&#xff1a; 一、核心定义与本质 IMU …...

talk-centos6之间实现

在 CentOS 6.4 上配置和使用 talk 工具&#xff0c;需要注意系统版本较老&#xff0c;很多配置可能不同于现代系统。我会提供 详细步骤 自动化脚本&#xff0c;帮你在两台 CentOS 6.4 机器上实现局域网聊天。 ⸻ &#x1f9f1; 一、系统准备 假设你有两台主机&#xff1a; …...

hivesql是什么数据库?

HiveSQL并非指一种独立的数据库&#xff0c;而是指基于Apache Hive的SQL查询语言接口&#xff0c;Hive本身是一个构建在Hadoop生态系统之上的数据仓库基础设施。 以下是对HiveSQL及其相关概念的详细解释&#xff1a; 一、Hive概述 定义&#xff1a; Hive是由Facebook开发&…...

(1)python开发经验

文章目录 1 安装包格式说明2 PySide支持Windows7 更多精彩内容&#x1f449;内容导航 &#x1f448;&#x1f449;Qt开发 &#x1f448;&#x1f449;python开发 &#x1f448; 1 安装包格式说明 PySide下载地址 进入下载地址后有多种安装包&#xff0c;怎么选择&#xff1a; …...

[论文翻译]PPA: Preference Profiling Attack Against Federated Learning

文章目录 摘要一、介绍1、最先进的攻击方式2、PPA3、贡献 二、背景和相关工作1、联邦学习2、成员推理攻击3、属性推理攻击4、GAN攻击5、联邦学习中的隐私推理攻击 三、PPA1、威胁模型与攻击目标&#xff08;1&#xff09;威胁模型&#xff08;2&#xff09;攻击目标 2、PPA 概述…...

北三短报文数传终端:筑牢水利防汛“智慧防线”,守护江河安澜

3月15日我国正式入汛&#xff0c;较以往偏早17天。据水利部预警显示&#xff0c;今年我国极端暴雨洪涝事件趋多趋频趋强&#xff0c;叠加台风北上影响内陆的可能性&#xff0c;灾害风险偏高&#xff0c;防汛形势严峻复杂。面对加快推进“三道防线”建设&#xff0c;提升“四预”…...

函数加密(Functional Encryption)简介

1. 引言 函数加密&#xff08;FE&#xff09;可以被看作是公钥加密&#xff08;PKE&#xff09;的一种推广&#xff0c;它允许对第三方的解密能力进行更细粒度的控制。 在公钥加密中&#xff0c;公钥 p k \mathit{pk} pk 用于将某个值 x x x 加密为密文 c t \mathit{ct} c…...

思维链实现 方式解析

思维链的实现方式 思维链的实现方式除了提示词先后顺序外,还有以下几种: 增加详细的中间步骤提示:通过提供问题解决过程中的详细中间步骤提示,引导模型逐步推导和思考。例如,在解决数学证明题时,提示词可以具体到每一步需要运用的定理、公式以及推理的方向,帮助模型构建…...

深入学习Zookeeper的知识体系

目录 1、介绍 1.1、CAP 理论 1.2、BASE 理论 1.3、一致性协议ZAB 1、介绍 2、角色 3、ZXID和myid 4、 历史队列 5、协议模式 6、崩溃恢复模式 7、脑裂问题 2、zookeeper 2.1、开源项目 2.2、功能 2.3、选举机制 3、数据模型 3.1、介绍 3.2、znode分类 4、监听…...

电商平台一站式安全防护架构设计与落地实践

引言&#xff1a;安全即业务&#xff0c;防御即增长 国际权威机构 Forrester 最新报告指出&#xff0c;2024 年全球电商平台因安全防护不足导致的直接营收损失高达 $180 亿&#xff0c;而采用一体化防护方案的头部企业客户留存率提升 32%。本文基于 10 万 节点防护实战数据&a…...

【Pandas】pandas DataFrame cummin

Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...

奇妙小博客

import matplotlib.pyplot as plt# 定义顶点坐标 A [0, 0] B [6, 1] C [4, 6] P [4, 3]# 绘制三角形 ABC plt.plot([A[0], B[0], C[0], A[0]], [A[1], B[1], C[1], A[1]], b-, labelTriangle ABC) # 绘制点 P plt.scatter(P[0], P[1], colorr, labelPoint P(4,3))# 标注顶点…...

嵌入式学习笔记 - HAL_ADC_ConfigChannel函数解析

贴函数原型&#xff1a; 一 首先配置规则通道序列 其实所有的配置函数都是在对寄存器进行操作&#xff0c;要想看懂Hal库底层函数驱动就先把寄存器如何配置看懂&#xff0c;以下是配置规则通道寄存器的介绍&#xff0c;以ADC_SQR3为例&#xff0c;也就是通道序列1到序列6&…...

Java反射详细介绍

的反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时动态获取类的信息、操作类的成员&#xff08;属性、方法、构造器&#xff09;&#xff0c;甚至修改类的行为。它是框架开发&#xff08;如 Spring、MyBatis&#xff09;、单元测试工具&a…...

2025年土木建筑与水利工程国际会议(ICCHE 2025)

2025 International Conference on Civil and Hydraulic Engineering (ICCHE 2025) &#xff08;一&#xff09;会议信息 会议简称&#xff1a;ICCHE 2025 大会地点&#xff1a;中国银川 投稿邮箱&#xff1a;icchesub-paper.com 收录检索&#xff1a;提交Ei Compendex,CPCI,C…...

适应性神经树:当深度学习遇上决策树的“生长法则”

1st author: Ryutaro Tanno video: Video from London ML meetup paper: Adaptive Neural Trees ICML 2019 code: rtanno21609/AdaptiveNeuralTrees: Adaptive Neural Trees 背景 在机器学习领域&#xff0c;神经网络&#xff08;NNs&#xff09;凭借其强大的表示学习能力&…...

IBM BAW(原BPM升级版)使用教程第十四讲

续前篇&#xff01; 一、流程设计中的编程 在 IBM Business Automation Workflow (BAW) 中&#xff0c;编程部分涵盖了多种技术、工具和策略&#xff0c;帮助用户定制和扩展流程。BAW 主要通过脚本、集成、服务和自定义代码来实现流程的灵活性和定制化。下面将详细讲解 BAW …...

【计算机网络 第8版】谢希仁编著 第四章网络层 题型总结3 SDN OpenFlow

SDN OpenFlow题型 这题其实&#xff0c;认真看书P196-197的例子也不难理解。我个人认为所谓防自学设计主要就是你没看懂这张图的时候就是天书&#xff0c;你知道怎么读这张图的时候就很简单。不过我相信这个用心一点应该也都是能懂的。 题目 4.66-4.69 4-66 我最大的一个问题…...

【React中函数组件和类组件区别】

在 React 中,函数组件和类组件是两种构建组件的方式,它们在多个方面存在区别,以下详细介绍: 1. 语法和定义 类组件:使用 ES6 的类(class)语法定义,继承自 React.Component。需要通过 this.props 来访问传递给组件的属性(props),并且通常要实现 render 方法返回 JSX…...

多线程代码案例-1 单例模式

单例模式 单例模式是开发中常见的设计模式。 设计模式&#xff0c;是我们在编写代码时候的一种软性的规定&#xff0c;也就是说&#xff0c;我们遵守了设计模式&#xff0c;代码的下限就有了一定的保证。设计模式有很多种&#xff0c;在不同的语言中&#xff0c;也有不同的设计…...

langChain存储文档片段,并进行相似性检索

https://python.langchain.ac.cn/docs/how_to/document_loader_pdf/#vector-search-over-pdfs 这段代码展示了如何使用LangChain框架中的InMemoryVectorStore和OpenAIEmbeddings来存储文档片段&#xff0c;并基于提供的查询进行相似性搜索。下面是对每一行代码的详细解释&…...

MQTT协议技术详解:深入理解物联网通信基础

MQTT协议技术详解&#xff1a;深入理解物联网通信基础 1. MQTT协议概述 MQTT (Message Queuing Telemetry Transport) 是一种轻量级的发布/订阅消息传输协议&#xff0c;专为资源受限设备和低带宽、高延迟或不可靠网络环境设计。作为物联网通信的核心协议之一&#xff0c;MQTT…...

python中的进程锁与线程锁

在Python中&#xff0c;线程和进程使用锁的机制有所不同&#xff0c;需分别通过threading和multiprocessing模块实现。以下是具体用法及注意事项&#xff1a; 一、线程锁&#xff08;Thread Lock&#xff09; 基本用法 线程锁用于多线程环境下保护共享资源&#xff0c;防止数据…...

导出导入Excel文件(详解-基于EasyExcel)

前言&#xff1a; 近期由于工作的需要&#xff0c;根据需求需要导出导入Excel模板。于是自学了一下下&#xff0c;在此记录并分享&#xff01;&#xff01; EasyExcel&#xff1a; 首先我要在这里非常感谢阿里的大佬们&#xff01;封装这么好用的Excel相关的API&#xff0c;真…...

仿正点原子驱动BMP280气压传感器实例

文章目录 前言 一、寄存器头文件定义 二、设备树文件中添加节点 三、驱动文件编写 四、编写驱动测试文件并编译测试 总结 前言 本文驱动开发仿照正点原子的iic驱动实现&#xff0c;同时附上bmp280的数据手册&#xff0c;可访问下面的链接&#xff1a; BMP280_Bosch(博世…...

Java 反射机制(Reflection)

一、理论说明 1. 反射的定义 Java 反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意方法和属性&#xff1b;这种动态获取信息以及动态调用对象方法的功能称为 Jav…...

每日Prompt:发光线条解剖图

提示词 一幅数字插画&#xff0c;描绘了一个 [SUBJECT]&#xff0c;其结构由一组发光、干净且纯净的蓝色线条勾勒而成。画面设定在深色背景之上&#xff0c;以突出 [SUBJECT] 的形态与特征。某个特定部位&#xff0c;如 [PART]&#xff0c;通过红色光晕加以强调&#xff0c;以…...

从新手到高手:全面解析 AI 时代的「魔法咒语」——Prompt

引言&#xff1a;AI 时代的「语言炼金术」 在人工智能技术突飞猛进的今天&#xff0c;我们正在经历一场堪比工业革命的生产力变革。从聊天机器人到图像生成&#xff0c;从数据分析到自动化写作&#xff0c;AI 模型正在重塑人类与信息交互的方式。而在这一切背后&#xff0c;隐…...

【SpringBoot】集成kafka之生产者、消费者、幂等性处理和消息积压

目录 配置文件 application.properties启动类 ApplicationKafka 配置Message 消息实体类MessageRepository 消息处理消息积压监控服务Kafka消息消费者服务Kafka消息生产者服务API控制器提供测试接口关键特性说明生产环境建议 配置文件 application.properties # 应用配置 serv…...

[SAP] 通过事务码Tcode获取程序名

如何通过事务码查找对应的程序名&#xff1f; 方法一&#xff1a;直接运行事务码&#xff0c;跳转至功能详情页面&#xff0c;点击【系统】|【状态】即可获取对应事务码的程序名 从上面可以了解到自定义的事务码"ZMM01"对应的程序名为"ZYT36_ZMM001_01"&a…...

蓝桥杯12届国B 纯质数

题目描述 如果一个正整数只有 1 和它本身两个约数&#xff0c;则称为一个质数&#xff08;又称素数&#xff09;。 前几个质数是&#xff1a;2,3,5,7,11,13,17,19,23,29,31,37,⋅⋅⋅ 。 如果一个质数的所有十进制数位都是质数&#xff0c;我们称它为纯质数。例如&#xff1…...

国产大模型「五强争霸」,决战AGI!

来源 | 新智元 DeepSeek的横空出世&#xff0c;已经彻底改变了全球的AI局势。 从此&#xff0c;不仅中美大模型竞争格局改变&#xff0c;国产大模型的产业版图&#xff0c;也被一举打破&#xff01; 纵观中国基础大模型的市场&#xff0c;可以看到&#xff0c;如今的基础大模…...

C++修炼:继承

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞&#xff0c;关注&am…...

Mysql新增

插入一个记录需要的时间由下列因素组成&#xff0c;其中的数字表示大约比例&#xff1a; 连接&#xff1a;(3)发送查询给服务器&#xff1a;(2)分析查询&#xff1a;(2)插入记录&#xff1a;&#xff08;1x记录大小&#xff09;插入索引&#xff1a;&#xff08;1x索引&#x…...

华秋2025电子设计与制造技术研讨会(华东站)成功举办!

“探索科技前沿&#xff0c;共筑创新未来”——华秋“2025电子设计与制造技术研讨会第一站&#xff1a;华东站”在江苏苏州圆满落幕。 随着电子信息产业的持续增长和数字化经济的加速转型&#xff0c;数字化电子供应链的作用愈发显著。本届研讨聚焦EDA设计、DFM软件分析、多层…...

[学习] RTKLib详解:qzslex.c、rcvraw.c与solution.c

RTKLib详解&#xff1a;qzslex.c、rcvraw.c与solution.c 本文是 RTKLlib详解 系列文章的一篇&#xff0c;目前该系列文章还在持续总结写作中&#xff0c;以发表的如下&#xff0c;有兴趣的可以翻阅。 [学习] RTKlib详解&#xff1a;功能、工具与源码结构解析 [学习]RTKLib详解…...

【Ubuntu】neovim Lazyvim安装与卸载

安装neovim # 下载 AppImage wget https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.appimage# 添加执行权限 chmod ux nvim-linux-x86_64.appimage# 移动到系统路径&#xff0c;重命名为 nvim sudo mv nvim-linux-x86_64.appimage /usr/local/b…...

数据结构(一) 绪论

一. 时间复杂度: (1)定义: 时间复杂度是衡量算法执行时间随输入规模(通常用n表示)增长的变化趋势的指标,时间复杂度用O符号表示 用于描述算法在最坏情况下或平均情况下的时间需求 时间复杂度关注的是操作次数的增长率&#xff0c;而非具体执行时间 常见的时间复杂度由小到大依次…...