CCF-CSP第34次认证第二题——矩阵重塑(其二)【需反复思考学习!!!】
第34次认证第二题——矩阵重塑(其二)
官网题目链接
时间限制: 1.0 秒
空间限制: 512 MiB
相关文件: 题目目录(样例文件)
题目背景
矩阵转置操作是将矩阵的行和列交换的过程。在转置过程中,原矩阵 𝐴A 的元素 𝑎𝑖𝑗aij 会移动到转置后的矩阵 𝐴𝑇AT 的 𝑎𝑗𝑖aji 的位置。这意味着 𝐴A 的第 𝑖i 行第 𝑗j 列的元素在 𝐴𝑇AT 中成为了第 𝑗j 行第 𝑖i 列的元素。
例如,有矩阵 𝐴A 如下:
𝐴=[𝑎𝑏𝑐𝑑𝑒𝑓]A=[adbecf]
它的转置矩阵 𝐴𝑇AT 会是:
𝐴𝑇=[𝑎𝑑𝑏𝑒𝑐𝑓]AT=abcdef
矩阵转置在线性代数中是一个基本操作,广泛应用于各种数学和工程领域。
题目描述
给定 𝑛×𝑚n×m 的矩阵 𝑀M,试编写程序支持以下查询和操作:
-
重塑操作 𝑝p、𝑞q:将当前矩阵重塑为 𝑝×𝑞p×q 的形状(重塑的具体定义见上一题);
-
转置操作:将当前矩阵转置;
-
元素查询 𝑖i、𝑗j:查询当前矩阵第 𝑖i 行 𝑗j 列的元素(0≤𝑖<𝑛0≤i<n 且 0≤𝑗<𝑚0≤j<m)。
依次给出 𝑡t 个上述查询或操作,计算其中每个查询的结果。
输入格式
从标准输入读入数据。
输入共 𝑛+𝑡+1n+t+1 行。
输入的第一行包含三个正整数 𝑛n、𝑚m 和 𝑡t。
接下来依次输入初始矩阵 𝑀M 的第 00 到第 𝑛−1n−1 行,每行包含 𝑚m 个整数,按列下标从 00 到 𝑚−1m−1 的顺序依次给出。
接下来输入 𝑡t 行,每行包含形如 op a b
的三个整数,依次给出每个查询或操作。具体输入格式如下:
-
重塑操作:
1 p q
-
转置操作:
2 0 0
-
元素查询:
3 i j
输出格式
输出到标准输出。
每个查询操作输出一行,仅包含一个整数表示查询结果。
样例1输入
3 2 3
1 2
3 4
5 6
3 0 1
1 2 3
3 1 2
样例1输出
2
6
样例2输入
3 2 5
1 2
3 4
5 6
3 1 0
2 0 0
3 1 0
1 3 2
3 1 0
样例2输出
3
2
5
初始矩阵: [123456]135246, (1,0)(1,0) 位置元素为 33;
转置后: [135246][123456], (1,0)(1,0) 位置元素为 22;
重塑后: [135246]154326, (1,0)(1,0) 位置元素为 55。
子任务
8080 的测试数据满足:
- 𝑡≤100t≤100;
全部的测试数据满足:
-
𝑡≤105t≤105 且其中转置操作的次数不超过 100100;
-
𝑛n、𝑚m 和所有重塑操作中的 𝑝p、𝑞q 均为正整数且 𝑛×𝑚=𝑝×𝑞≤104n×m=p×q≤104;
-
输入矩阵中每个元素的绝对值不超过 10001000。
提示
-
对于 𝑛×𝑚n×m 的矩阵,虽然转置和重塑操作都可以将矩阵形态变为 𝑚×𝑛m×n,但这两种操作通常会导致不同的结果。
-
评测环境仅提供各语言的标准库,特别地,不提供任何线性代数库(如
numpy
、pytorch
等)。
语言和编译选项
# | 名称 | 编译器 | 额外参数 | 代码长度限制 |
---|---|---|---|---|
0 | g++ | g++ | -O2 -DONLINE_JUDGE | 65536 B |
1 | gcc | gcc | -O2 -DONLINE_JUDGE | 65536 B |
2 | java | javac | 65536 B | |
3 | python3 | python3 | 65536 B |
参考题解
原始版本(可仅看优化版本)
#include<iostream>
#include<vector>
using namespace std;vector<vector<int> > reshape(const vector<vector<int> >& array, int newN, int newM) {int n = array.size();int m = array[0].size();vector<vector<int> > result(newN, vector<int>(newM));int index = 0;for(int i = 0; i < n; i++) {for(int j = 0; j < m; j++) {result[index / newM][index % newM] = array[i][j]; //!!!!!!重点,学会这种方法,/列数为行标,%列数为列标! index++;}}return result;
}//转置
vector<vector<int> > transpose(const vector<vector<int> >& array) {int n = array.size();int m = array[0].size();vector<vector<int> > result(m, vector<int>(n));for(int i = 0; i < n; i++) {for(int j = 0; j < m; j++) {result[j][i] = array[i][j];}}return result;
}int main() {int n, m, t;cin >> n >> m >> t;vector<vector<int> > array(n, vector<int>(m));for(int i = 0; i < n; i++) {for(int j = 0; j < m; j++) {cin >> array[i][j];}}int op = 0;for(int i = 0; i < t; i++) {cin >> op;switch (op) {case 1: {int nn, mm;cin >> nn >> mm;array = reshape(array, nn, mm);break;}case 2: {int ignore;cin >> ignore >> ignore;array = transpose(array);break;}case 3: {int x, y;cin >> x >> y;cout << array[x][y] << endl;break;}}}return 0;
}
改进思路
-
首先需要考虑时间问题,题目给出的时间限制是1秒,而t可以达到1e5次操作,这意味着如果每次操作都直接修改矩阵的话,时间复杂度可能会很高,尤其是转置操作,如果每次转置都实际交换元素的位置,那转置次数较多的话可能会超时。考虑用某种方式记录转置的状态,而不是每次实际转置。—— 问题的关键在于如何高效地维护矩阵的当前形态,而无需每次都物理上重塑或转置矩阵(不过子任务中提到 ”转置操作的次数不超过 100“ ,也许是已经考虑了这个问题?模拟系统没开咱也不知道这个代码能不能拿满分,这里只是探讨一下优化思路)
-
逆向思维:不主动改变矩阵形态——修改矩阵次数过多会提高时间复杂度(见3);根据操作逆向求对应原始坐标的位置
-
赋值、算术运算(加减乘除):O(1);矩阵存储:使用
std::vector<std::vector<int>>
存储矩阵,初始化一个大小为n x m的矩阵耗时约为O(n*m),因为每个元素都需要被初始化;矩阵转置:对于一个n x m的矩阵进行转置操作,通常需要遍历整个矩阵,因此时间复杂度为O(n*m)。 -
可能的思路是:维护一个一维数组data【矩阵的行优先存储方式】,存储所有元素,初始时按行优先顺序填充。然后,每次转置操作会切换一个转置标志,并交换当前的行列数。重塑操作则改变当前的行列数为p和q。当需要查询元素(i,j)时,根据当前是否转置,以及当前的行列数,计算出该元素在data数组中的位置。
-
但是,重塑操作后的数据是按行填充的,而转置会影响数据的排列顺序。因此,如果在转置后进行重塑,可能需要调整处理方式。这种情况下,仅仅使用一个标志位可能不够,因为重塑后的数据布局依赖于当前的实际存储顺序。例如,假设原矩阵是2x3,转置后变为3x2,数据存储顺序改变。此时如果重塑为6x1,转置后的重塑应该按照转置后的数据顺序来填充,而不是原顺序。因此,转置操作必须实际改变数据的存储方式,否则重塑后的数据顺序会错误。——简而言之,重塑操作只调整当前的行列数,不改变数据,因为数据是按行存储的。转置操作则重新生成数据数组,并交换行列数。查询操作根据当前的行列数计算索引。
-
具体来说:对于重塑操作,设置rows和cols为p和q;对于转置操作,生成新的data数组;新的data数组的大小是 rows*cols = cols*rows。
-
需要注意,输入可能较大,所以需要使用快速的输入方法。例如,可以用scanf代替cin,或者关闭同步。
-
在转置操作中,考虑使用vector的swap方法,这样可以避免不必要的拷贝,只需交换内部指针,效率更高。
优化后的代码
#include <cstdio>
#include <vector>using namespace std;int main () {int n, m, t;scanf("%d%d%d", &n, &m, &t);//按行优先存储矩阵元素vector<int> data(n * m); //预分配空间,避免 push_back 的潜在扩容开销for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {scanf("%d", &data[i * m + j]);//对于一维二维的转换i*m+j要熟悉 }} int current_rows = n; //当前矩阵的行数int current_cols = m; //当前矩阵的列数while (t--) { //像这种到0结束的直接用while更简便,不要用for循环int op, a, b;scanf("%d%d%d", &op, &a, &b);if (op == 1) {//重塑仅改变形状,数据顺序不变current_rows = a;current_cols = b; } else if (op == 2) {//转置vector<int> transposed_data;transposed_data.reserve(current_rows * current_cols); //预分配内存(reserve())减少动态扩容开销//转置:按新行顺序遍历旧列(对转置的本质要熟悉)for (int col = 0; col < current_cols; col++) { //col为外层循环,即按列存数据,先存第一列,也就实现了转置 for (int row = 0; row < current_rows; row++) {transposed_data.push_back(data[row * current_cols + col]); }} //交换新旧数据(使用 vector::swap() 实现 O(1) 时间的数据交换)data.swap(transposed_data);//行列数交换(使用 swap() 函数代替临时变量交换行列数)swap(current_rows, current_cols); } else if (op == 3) {//直接计算行优先索引printf("%d\n", data[a * current_cols + b]); }} return 0;
}
输入输出优化知识点
输入注意事项:
-
地址传递:
scanf
需要变量的地址(&
符号) -
缓冲区问题:混合使用
cin
和scanf
可能导致读取错位 -
格式匹配:必须严格匹配格式字符串与实际数据类型
小结
这道题可以反复思考学习,对我来说还是有很多有价值的内容的,之后有时间可以按这个思路优化一下33-1的矩阵重塑(其一)
相关文章:
CCF-CSP第34次认证第二题——矩阵重塑(其二)【需反复思考学习!!!】
第34次认证第二题——矩阵重塑(其二) 官网题目链接 时间限制: 1.0 秒 空间限制: 512 MiB 相关文件: 题目目录(样例文件) 题目背景 矩阵转置操作是将矩阵的行和列交换的过程。在转置过程中&…...
大模型DeepSeek-R1学习
学习路线 机器学习-> 深度学习-> 强化学习-> 深度强化学习 大模型演进分支 微调: SFT 监督学习蒸馏:把大模型作为导师训练小模型RLHF:基于人类反馈的强化学习 PPO 近端策略优化 油门 - 重要性采样 权重 * 打分刹车 - clip 修剪…...
Spring Cloud — 深入了解Eureka、Ribbon及Feign
Eureka 负责服务注册与发现;Ribbon负责负载均衡;Feign简化了Web服务客户端调用方式。这三个组件可以协同工作,共同构建稳定、高效的微服务架构。 1 Eureka 分布式系统的CAP定理: 一致性(Consistency)&am…...
19.4.9 数据库方式操作Excel
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 本节所说的操作Excel操作是讲如何把Excel作为数据库来操作。 通过COM来操作Excel操作,请参看第21.2节 在第19.3.4节【…...
《深度LSTM vs 普通LSTM:训练与效果的深度剖析》
在深度学习领域,长短期记忆网络(LSTM)以其出色的处理序列数据能力而备受瞩目。而深度LSTM作为LSTM的扩展形式,与普通LSTM在训练和效果上存在着一些显著的不同。 训练方面 参数数量与计算量:普通LSTM通常只有一层或较少…...
认识一下redis的分布式锁
Redis的分布式锁是一种通过Redis实现的分布式锁机制,用于在分布式系统中确保同一时刻只有一个客户端可以访问某个资源。它通常用于防止多个应用实例在同一时间执行某些特定操作,避免数据的不一致性或竞争条件。 实现分布式锁的基本思路: 1. …...
untiy3D为游戏物体制作简单的动画
1.创建一个物体挂载动画组件Animator 2.创建一个动画控制器 3.动画控制器挂载到Animator组件 4.创建动画窗口>动画 入口默认执行left 执行效果 20250212_151707 脚本控制动画 鼠标点击是切换到动画t using System.Collections; using System.Collections.Generic; usi…...
微服务与网关
什么是网关 背景 单体项目中,前端只用访问指定的一个端口8080,就可以得到任何想要的数据 微服务项目中,ip是不断变化的,端口是多个的 解决方案:网关 网关:就是网络的关口,负责请求的路由、转发、身份校验。 前段还是访问之前的端口8080即可 后端对于前端来说是透明的 网…...
ArcGIS基础知识之ArcMap基础设置——ArcMap选项:常规选项卡设置及作用
作为一名 GIS 从业者,ArcMap 是我们日常工作中不可或缺的工具。对于初学者来说,掌握 ArcMap 的基础设置是迈向 GIS 分析与制图的第一步。今天,就让我们一起深入了解 ArcMap 选项中常规选项卡的各个设置,帮助大家更好地使用这款强大的软件。 在 ArcMap 中,常规选项卡是用户…...
Ubuntu轻松部署ToolJet低代码开发平台结合内网穿透远程访问
文章目录 前言1.关于ToolJet2.Docker部署3.简单使用演示4.安装cpolar内网穿透5. 配置公网地址6. 配置固定公网地址 前言 本文主要介绍如何在本地Linux服务器使用Docker部署轻量级开源文件分享系统ToolJet,并结合cpolar内网穿透工具轻松实现跨网络环境远程访问与使用…...
[MySQL]5-MySQL扩展(分片)
随着数据量和用户量增加,MySQL会有读写负载限制。以下是部分解决方案 目录 功能拆分 使用读池拓展读(较复杂) 排队机制 🌟分片拓展写 按业务或职责划分节点或集群 大数据集切分 分片键的选择 多个分片键 跨分片查询 资料…...
如何使用 DeepSeek 帮助自己的工作
Hi,我是布兰妮甜 !在当今快速发展的技术领域,人工智能(AI)工具已经成为提高工作效率、促进创新的重要助手。DeepSeek作为一款先进的AI解决方案,为用户提供了强大的数据处理、分析以及预测能力,可…...
Redis缓存穿透、击穿和雪崩面试相关问题整理
在互联网公司的面试中,Redis 的缓存穿透、击穿和雪崩是高频考点,尤其在北京的头部互联网公司(如字节、阿里、美团、快手等)。以下是针对这三个问题的详细解析及常见面试题方向: 一、缓存穿透(Cache Penetra…...
Flink之Watermark
Apache Flink 是一个分布式流处理框架,它非常擅长处理实时数据流。流处理中的一个关键挑战是事件时间的处理,因为在流式数据中,事件到达系统的顺序可能并不代表它们的实际发生时间。为了解决这一问题,Flink 引入了**Watermark&…...
vs构建网络安全系统 网络安全和网络搭建
网站的组成和搭建 网站由服务器,容器,脚本,数据库组成。 服务器和家庭电脑一样。 容器又为环境或服务:apache,lls,tomcat,nginx等 脚本:php,aspx,asp&#x…...
缓存穿透问题及解决方案
一、什么是缓存穿透? 在分布式系统中,缓存常常用于提高系统的性能,减轻数据库的压力。缓存穿透问题指的是请求的数据在缓存和数据库中都不存在,导致请求每次都直接查询数据库,无法从缓存中获取数据,从而绕…...
ElementUI el-popover弹框背景色设置
1.el-popover样式由于使用了 absolute 属性,导致脱离了节点,所以在父级元素使用class无法进行权重处理来修改其样式,解决方式如下:通过popper-class实现样式处理,避免全局样式污染 // html <el-popoverplacement&q…...
在 Mac ARM 架构上使用 nvm 安装 Node.js 版本 16.20.2
文章目录 1. 安装 nvm(如果还没有安装的话)2. 加载 nvm 配置3. 列出特定系列的 Node.js 版本(远程):4. 安装 Node.js 16.20.25. 使用指定版本的 Node.js6. 验证安装 在 Mac ARM 架构上使用 nvm 安装 Node.js 版本 16.…...
spring集成activiti流程引擎(源码)
前言 activiti工作流引擎项目,企业erp、oa、hr、crm等企事业办公系统轻松落地,请假审批demo从流程绘制到审批结束实例。 源码获取:本文末个人名片直接获取。 一、项目形式 springbootvueactiviti集成了activiti在线编辑器,流行…...
VLLM历次会议(2024.4)
Prefix Caching。预先算好KV cache,遇见公共前缀,复用之,避免再计算一遍。 场景:1. 多轮对话。2.公共的system prompt。 Guided Decoding(格式化输出) 通过Outlines工具实现。 支持正则表达式、JSON格式等。 输入:…...
基于 Docker 搭建 Elasticsearch + Kibana 环境
一、Elasticsearch 1. 下载镜像 elasticsearch镜像不支持latest标签,必须指定版本号 % docker pull elasticsearch:8.17.2 2. 启动容器 参考官方文档 https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docker.html % docker run -p 9200:9200 -p 9…...
在 ARM64 架构系统离线安装 Oracle Java 8 全流程指南
在 ARM64 架构系统离线安装 Oracle Java 8 全流程指南 文章目录 在 ARM64 架构系统离线安装 Oracle Java 8 全流程指南一、引言二、下载前的准备2.1 确认系统架构2.2 注册 Oracle 账号 三、从 Oracle 官方下载 Java 8 for ARM643.1 访问 Oracle Java 存档页面3.2 选择合适的版本…...
策略模式-小结
总结一下看到的策略模式: A:一个含有一个方法的接口 B:具体的实行方式行为1,2,3,实现上面的接口。 C:一个环境类(或者上下文类),形式可以是:工厂模式,构造器注入模式,枚举模式。 …...
记一次Self XSS+CSRF组合利用
视频教程在我主页简介或专栏里 (不懂都可以来问我 专栏找我哦) 目录: 确认 XSS 漏洞 确认 CSRF 漏洞 这个漏洞是我在应用程序的订阅表单中发现的一个 XSS 漏洞,只能通过 POST 请求进行利用。通常情况下,基于 POST 的…...
VSCode + Continue 实现AI编程助理
安装VS Code 直接官网下载安装,反正是免费的。 安装VS插件Continue 直接在插件市场中搜索, Continue,第一个就是了。 配置Chat Model 点击Add Chat model后进行选择: 选择Ollama后,需要点击下面的config file : 由于…...
使用Typescript开发Babylon.js的Vue3模板参考
main.js文件 // main.ts import { createApp } from vue import App from ./App.vuecreateApp(App).mount(#app) App.vue文件 <!-- App.vue --> <template><div class"app-container"><BabylonScene /></div> </template><…...
STM32+Proteus+DS18B20数码管仿真实验
1. 实验准备 硬件方面: 了解 STM32 单片机的基本原理和使用方法,本实验可选用常见的 STM32F103 系列。熟悉 DS18B20 温度传感器的工作原理和通信协议(单总线协议)。数码管可选用共阴极或共阳极数码管,用于显示温度值。…...
DeepSeek自然语言处理(NLP)基础与实践
自然语言处理(Natural Language Processing, NLP)是人工智能领域的一个重要分支,专注于让计算机理解、生成和处理人类语言。NLP技术广泛应用于机器翻译、情感分析、文本分类、问答系统等场景。DeepSeek提供了强大的工具和API,帮助我们高效地构建和训练NLP模型。本文将详细介…...
Baklib优化数字化内容管理用科技提升商业效率与增值潜力
内容概要 在当今数字化迅速发展的时代,数字化内容管理已成为企业提升竞争力的重要手段。Baklib作为一款强大的智能优化内容管理系统,通过先进的科技手段,帮助企业在内容管理和数据整合方面实现高效运作。Baklib 是什么类型的工具,…...
视频基础操作
1.1. 例子 读取mp4格式的视频,将每一帧改为灰度图,并且打上水印(“WaterMark”),并将其输出保存为out.mp4,在这个例子中可以看到视频读取,每帧数据处理,视频保存的整体流程简单示例 import cv…...
写一个鼠标拖尾特效
思路和逻辑 要实现鼠标拖尾特效,我们需要: 监听鼠标移动事件,获取鼠标的当前位置。在每次鼠标移动时,绘制一个小圆点或其他形状在鼠标的当前位置。将所有绘制的圆点连接起来,形成一条“尾巴”。使用动画效果让尾巴看…...
Docker上安装Zabbix-server-mysql报错
创建新的zabbix server (mysql)容易,最后一条日志报错 cannot usedatabase"zabbix": its "users" table is empty (is this the Zabbix proxy database?) 往前还有一条关键报错信息 ERROR 1153 (08S01): Got a packe…...
<tauri><rust><GUI>使用tauri创建一个图片浏览器(文件夹遍历、图片切换)
前言 本文是基于rust和tauri,由于tauri是前、后端结合的GUI框架,既可以直接生成包含前端代码的文件,也可以在已有的前端项目上集成tauri框架,将前端页面化为桌面GUI。 环境配置 系统:windows 10平台:visual studio code语言:rust、javascript库:tauri2.0概述 本文是…...
【STM32系列】利用MATLAB配合ARM-DSP库设计IIR数字滤波器(保姆级教程)
ps.源码放在最后面 设计FIR数字滤波器可以看这里:利用MATLAB配合ARM-DSP库设计FIR数字滤波器(保姆级教程) 设计IIR滤波器 MATLAB配置 设计步骤 首先在命令行窗口输入"filterDesigner",接着就会跳出以下界面…...
迷宫(信息学奥赛一本通-1215)
【题目描述】 一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由nn的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行。同时当Extense处在某个格点时,他只能移动到东南西北(或…...
centos7 curl#6 - Could not resolve host mirrorlist.centos.org; 未知的错误 解决方案
问题描述 centos7系统安装完成后,yum安装软件时报错“curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误”” [root192 ~]# yum install vim -y 已加载插件:fastestmirror Determining fastest mirrors Could not retrieve mirro…...
Ubuntu安装PgSQL17
参考官网教程,Ubuntu24 apt在线安装Postgres 17 1. 要手动配置 Apt 存储库 # 导入存储库签名密钥: sudo apt install curl ca-certificates sudo install -d /usr/share/postgresql-common/pgdg sudo curl -o /usr/share/postgresql-common/pgdg/apt…...
在 Navicat 17 中扩展 PostgreSQL 数据类型 - 范围类型
范围类型 PostgreSQL 是市场上最灵活的数据库之一,这已不是什么秘密。事实上,PostgreSQL 的可扩展性和丰富的功能集使 PostgreSQL 近期已超越 MySQL,成为最受开发人员推崇和最受欢迎的数据库系统。在这个使用 Navicat Premium 17 在 Postgre…...
VMware Workstate 的 Ubuntu18 安装 vmware tools(不安装没法共享)
在共享主机路径后,可以在: /mnt/hgfs/下方找到共享的文件。但没有安装vmware tool时是没法共享的。 如何安装vmware tool,网上版本很多。这里记录一下: VMware Workstation 17 Pro,版本:17.6.0 虚拟机系统…...
稀土抑烟剂——为汽车火灾安全增添防线
一、稀土抑烟剂的基本概念 稀土抑烟剂是一类基于稀土元素(如稀土氧化物和稀土金属化合物)开发的高效阻燃材料。它可以显著提高汽车内饰材料的阻燃性能,减少火灾发生时有毒气体和烟雾的产生。稀土抑烟剂不仅能提升火灾时的安全性,…...
【工业安全】-CVE-2019-17621-D-Link Dir-859L 路由器远程代码执行漏洞
文章目录 1.漏洞描述 2.环境搭建 3.漏洞复现 4.漏洞分析 4.1:代码分析 4.2:流量分析 5.poc代码: 1.漏洞描述 漏洞编号:CVE-2019-17621 漏洞名称:D-Link DIR-859 命令注入漏洞 威胁等级:严重 漏洞详…...
git 记录
git 记录 报错warning: unknown value given to http.version: 2 报错 warning: unknown value given to http.version: ‘2’ 删除指定http版本 git config --global --unset http.version...
MVC(Model-View-Controller)framework using Python ,Tkinter and SQLite
1.项目结构 sql: CREATE TABLE IF NOT EXISTS School (SchoolId TEXT not null, SchoolName TEXT NOT NULL,SchoolTelNo TEXT NOT NULL) 整体思路 Model:负责与 SQLite 数据库进行交互,包括创建表、插入、删除、更新和查询数据等操作。View࿱…...
算法——数学建模中的“上帝掷骰子”:蒙特卡罗算法
一、从原子弹到《原神》:随机算法的封神之路 1946年洛斯阿拉莫斯实验室,冯诺伊曼团队用掷骰子的方式,成功预测了氢弹的中子扩散——这是蒙特卡罗算法首次震惊世界。 2023年《原神》物理引擎,角色技能特效的光线追踪计算ÿ…...
洗牌加速!车规MCU“冷热交加”
汽车芯片赛道,正在经历新一轮震荡期。 本周,全球汽车芯片巨头—NXP对外披露了不及资本市场预期的四季度的财报,营收同比下降9%,全年下降5%,表明工业和汽车市场需求的低迷仍在持续。 公开信息显示,该公司一…...
面试整理-Java中常见创建线程池的方法
使用 Executors 工具类 Executors.newFixedThreadPool(int nThreads) 特点:创建一个固定大小的线程池,线程池中的线程数始终保持不变。 适用场景:适用于任务量已知且相对固定的场景,可以有效控制资源的使用。…...
计算机毕业设计——springboot教师人事档案管理系统
📘 博主小档案: 花花,一名来自世界500强的资深程序猿,毕业于国内知名985高校。 🔧 技术专长: 花花在深度学习任务中展现出卓越的能力,包括但不限于java、python等技术。近年来,花花更…...
ASP.NET Core程序的部署
发布 不能直接把bin/Debug部署到生产环境的服务器上,性能低。应该创建网站的发布版,用【发布】功能。两种部署模式:“框架依赖”和“独立”。独立模式选择目标操作系统和CPU类型。Windows、Linux、iOS;关于龙芯。 网站的运行 在…...
Python练习11-20
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 题目:判断101-200之间有多少…...
【Android开发AI实战】选择目标跟踪基于opencv实现——运动跟踪
文章目录 【Android 开发 AI 实战】选择目标跟踪基于 opencv 实现 —— 运动跟踪一、引言二、Android 开发与 AI 的融合趋势三、OpenCV 简介四、运动跟踪原理(一)光流法(二)卡尔曼滤波(三)粒子滤波 五、基于…...