2024东北四省ccpc
F题
解题思路
数论
有限小数的条件
p q \frac{p}{q} qp 在 k k k 进制下是有限小数,当且仅当 q q q 的所有质因数都是 p p p 或 k k k 的质因数。
即,若 q q q 的质因数分解为 q = ∏ i p i a i q = \prod_{i} p_i^{a_i} q=∏ipiai,则每个 p i p_i pi 必须满足 p i ∣ p p_i \mid p pi∣p 或 p i ∣ k p_i \mid k pi∣k。
数学表达:
由于 p q \frac{p}{q} qp 在 k k k 进制下是有限小数,等价于 q q q 能整除 p × k ∞ p \times k^{\infty} p×k∞(即 q q q 的所有质因数必须来自 p p p 或 k k k 的质因数)。
1. 质因数分解
- 对 p p p 和 k k k 进行质因数分解,合并它们的质因数集合。
- 设 p p p 的质因数分解为 p = ∏ i p i e i p = \prod_{i} p_i^{e_i} p=∏ipiei。
- 设 k k k 的质因数分解为 k = ∏ i p i f i k = \prod_{i} p_i^{f_i} k=∏ipifi(可能与 p p p 的质因数重叠)。
- 合并后的质因数集合即为所有可能的 q q q 的质因数来源。
2. 构造合法的 q q q
q q q 必须是这些质因数的乘积,且每个质因数的指数满足:
- 如果 p i p_i pi 来自 p p p,则 a i ≤ e i a_i \leq e_i ai≤ei。
- 如果 p i p_i pi 来自 k k k,则 a i a_i ai 可以任意大(因为 k ∞ k^{\infty} k∞ 可覆盖),但需保证 q ≤ x q \leq x q≤x。
3. DFS 枚举所有可能的 q q q
- 使用深度优先搜索(DFS)枚举所有可能的 q q q 的组合。
- 对于每个质因数 p i p_i pi,尝试其可能的指数 a i a_i ai(从 0 0 0 开始,直到 p i a i × 当前积 ≤ x p_i^{a_i} \times \text{当前积} \leq x piai×当前积≤x)。
- 统计所有满足 q ≤ x q \leq x q≤x 的组合。
#include <bits/stdc++.h>
using namespace std;
#define asd(i, a, b) for (int i = a; i <= b; i++)
#define int long long
const int inf = 0x3f3f3f3f3f3f3f3f, N = 1e6 + 5;
unordered_map<int, int> mp;//不能用map,会超时
int num[N], pri[N], cnt, ans, x;void dfs(int i, int now)
{int j = num[i];while (true) {if (i <= cnt)dfs(i + 1, now);if (j && now <= x / pri[i]) {now *= pri[i];ans++;j--;} else {break;}}
}void split(int x, int y)
{for (int i = 2; i <= x / i; ++i){while (x % i == 0)x /= i, mp[i] += y;}if (x > 1)mp[x] += y;
}signed main()
{ios::sync_with_stdio(false);int p, k;cin >> p >> x >> k;split(p, 1);split(k, 64);for (auto i : mp){num[++cnt] = i.second;pri[cnt] = i.first;}dfs(1, 1);cout << ans + 1 << endl;return 0;
}
I题
解题思路
组合数学+dp
排列区间的覆盖
为了确保每一个位置 i i i 都被至少一个长度为 k k k 的排列区间覆盖,序列的开头和结尾必须分别有一个排列区间。
具体来说:
- 前 k k k 个数字必须是一个排列(即 [ 1 , k ] [1,k] [1,k] 是排列)
- 最后 k k k 个数字也必须是一个排列(即 [ n − k + 1 , n ] [n-k+1,n] [n−k+1,n] 是排列)
中间的排列区间可以重叠,但必须确保没有位置被"遗漏"。
动态规划定义
定义 f i f_i fi 为长度为 i i i 的满足条件的序列的数量。
初始条件:
- 对于 i < k i < k i<k, f i = 0 f_i = 0 fi=0(无法形成长度为 k k k 的排列区间)
- 对于 i = k i = k i=k, f k = k ! f_k = k! fk=k!( 1 ∼ k 1\sim k 1∼k 的所有排列)
转移思路
对于 i > k i > k i>k,从较短的序列扩展而来:
- 假设已有长度为 j j j 的合法序列( j ≥ k j \geq k j≥k)
- 在其末尾添加 i − j i-j i−j 个数字( i − j ≤ k i-j \leq k i−j≤k)
- 确保:
- 新序列的最后 k k k 个数字是一个排列
- 新添加部分不会在中间形成新的排列区间
引入辅助函数 g i − j g_{i-j} gi−j 表示这种扩展方式数。
辅助函数 g g g 的定义
g m g_m gm 表示:
- 在一个排列后添加 m m m 个数字( m ≤ k m \leq k m≤k)
- 使得:
- 最后 k k k 个数字是新排列
- 新添加的 m m m 个数字内部不形成其他排列区间
计算公式:
g m = m ! − ∑ j = 1 m − 1 g j × ( m − j ) ! g_m = m! - \sum_{j=1}^{m-1} g_j \times (m-j)! gm=m!−j=1∑m−1gj×(m−j)!
其中:
- m ! m! m!:不考虑限制的总方式数
- g j × ( m − j ) ! g_j \times (m-j)! gj×(m−j)!:减去在位置 j j j 提前形成排列区间的情况
动态规划转移方程
对于 f i f_i fi( i > k i > k i>k):
f i = ∑ j = i − k i − 1 f j × g i − j f_i = \sum_{j=i-k}^{i-1} f_j \times g_{i-j} fi=j=i−k∑i−1fj×gi−j
表示从所有可能的 f j f_j fj 转移而来,乘以对应的扩展方式数 g i − j g_{i-j} gi−j。
算法流程
- 预处理计算 g 1 g_1 g1 到 g k g_k gk
- 初始化 f 0 f_0 f0 到 f k f_k fk
- 使用转移方程计算 f k + 1 f_{k+1} fk+1 到 f n f_n fn
- 最终结果: f n f_n fn
时间复杂度:
- 计算 g g g 数组: O ( k 2 ) O(k^2) O(k2)
- 计算 f f f 数组: O ( n ⋅ k ) O(n \cdot k) O(n⋅k)
- 总复杂度: O ( k 2 + n ⋅ k ) O(k^2 + n \cdot k) O(k2+n⋅k)
#include <bits/stdc++.h>
using namespace std;
#define asd(i, a, b) for (int i = a; i <= b; i++)
#define int long long
const int inf = 0x3f3f3f3f3f3f3f3f, N = 1e5 + 5, mod = 998244353;
int dp[N], g[N], fac[N];void init(int k)
{fac[0] = 1;asd(i, 1, N - 1) fac[i] = fac[i - 1] * i % mod;asd(m, 1, k){g[m] = fac[m];asd(j, 1, m - 1){g[m] = (g[m] - g[j] * fac[m - j] % mod + mod) % mod;}}
}signed main()
{ios::sync_with_stdio(false);cin.tie(0);int n, k;cin >> n >> k;if (k > n){cout << 0 << endl;return 0;}init(k);asd(i, 1, k - 1) dp[i] = 0;dp[k] = fac[k];asd(i, k + 1, n){dp[i] = 0;int start = max(i - k, k);asd(j, start, i - 1){dp[i] = (dp[i] + dp[j] * g[i - j] % mod) % mod;}}cout << dp[n] << endl;return 0;
}
H题
解题思路
lca+树上差分+二分
1. 问题转化
- 将城市和铁路视为一棵无向树,选择首都即选择树的根。
- 铁路方向固定为从子节点指向父节点(指向首都)。
- 朋友会面城市为两人在当前根下的最近公共祖先(LCA)。
- 会面路径长度为两人到LCA的路径长度的最大值。
2. 关键观察
- 对于固定的根,所有朋友对的会面路径长度可以通过LCA快速计算。
- 直接枚举所有可能的根(城市)不可行(因为n是1e5量级),需要更高效的方法。
3. 二分答案
- 二分搜索可能的答案(最小化最大路径长度)。
- 对于每个候选值
mid
,验证是否存在一个根,使得所有朋友对的会面路径长度 ≤mid
。
4. 验证方法(check函数)
- 对于每对朋友
(x_i, y_i)
:- 若原始路径长度 ≤
mid
,跳过。 - 否则,限制根的位置必须满足:
- 如果
x_i
到LCA的路径较长,则根必须在x_i
的mid
级祖先的子树内。 - 否则,根必须在
y_i
的(dis[i]-mid-1)
级祖先的子树外。
- 如果
- 若原始路径长度 ≤
- 使用差分数组标记所有限制条件的交集,检查是否存在满足所有限制的根。
5. 复杂度分析
- 预处理(DFS和倍增数组):
O(n log n)
- 二分验证:
O(m log n)
每次验证 - 总复杂度:
O((n + m) log n)
,适用于题目约束。
6. 输出结果
- 二分找到的最小满足条件的
mid
即为答案。
#include <bits/stdc++.h>
using namespace std;
#define asd(i, a, b) for (int i = a; i <= b; i++)
#define int long long
const int inf = 0x3f3f3f3f3f3f3f3f, N = 1e6 + 5;
int dep[N], o[N][22], sz[N], dfn[N], tot, x[N], y[N], dis[N], lca[N], n, m, pre[N];
vector<int> g[N];void dfs(int x, int f)
{dep[x] = dep[f] + 1;sz[x] = 1;o[x][0] = f;if (!dfn[x])dfn[x] = ++tot;for (int i = 1; i <= 20; ++i){o[x][i] = o[o[x][i - 1]][i - 1];}for (const auto &y : g[x]){if (y == f)continue;dfs(y, x);sz[x] += sz[y];}
}int getlca(int x, int y)
{if (dep[x] < dep[y])swap(x, y);for (int i = 20; i >= 0; --i){if (dep[o[x][i]] >= dep[y]){x = o[x][i];}}if (x == y)return x;for (int i = 20; i >= 0; --i){if (o[x][i] != o[y][i]){x = o[x][i];y = o[y][i];}}return o[x][0];
}int getfa(int u, int d)
{for (int i = 20; i >= 0; i--){if (d & (1 << i)){u = o[u][i];}}return u;
}bool check(int lim)
{int cnt = 0, vis = 0;asd(i, 1, m){if (dis[i] <= lim)continue;int distx = dep[x[i]] - dep[lca[i]];int disty = dep[y[i]] - dep[lca[i]];if (distx > lim){int u = getfa(x[i], lim);pre[dfn[u]]++;pre[dfn[u] + sz[u]]--;cnt++;}else{int u = getfa(y[i], dis[i] - lim - 1);pre[1]++;pre[dfn[u]]--;pre[dfn[u] + sz[u]]++;pre[n + 1]--;cnt++;}if (disty > lim){int u = getfa(y[i], lim);pre[dfn[u]]++;pre[dfn[u] + sz[u]]--;cnt++;}else{int u = getfa(x[i], dis[i] - lim - 1);pre[1]++;pre[dfn[u]]--;pre[dfn[u] + sz[u]]++;pre[n + 1]--;cnt++;}}int num = 0;asd(i, 1, n){num += pre[i];if (num == cnt)vis = 1;pre[i] = 0;}return vis;
}signed main()
{ios::sync_with_stdio(false);cin >> n >> m;asd(i, 1, n - 1){int u, v;cin >> u >> v;g[u].push_back(v);g[v].push_back(u);}dfs(1, 0);asd(i, 1, m){cin >> x[i] >> y[i];lca[i] = getlca(x[i], y[i]);dis[i] = dep[x[i]] + dep[y[i]] - 2 * dep[lca[i]];}int l = 0, r = n - 1;while (l <= r){int mid = (l + r) >> 1;if (check(mid))r = mid - 1;elsel = mid + 1;}cout << l << endl;return 0;
}
相关文章:
2024东北四省ccpc
F题 解题思路 数论 有限小数的条件 p q \frac{p}{q} qp 在 k k k 进制下是有限小数,当且仅当 q q q 的所有质因数都是 p p p 或 k k k 的质因数。 即,若 q q q 的质因数分解为 q ∏ i p i a i q \prod_{i} p_i^{a_i} q∏ipiai&#x…...
【C语言】初阶数据结构相关习题(二)
🎆个人主页:夜晚中的人海 今日语录:知识是从刻苦劳动中得来的,任何成就都是刻苦劳动的结果。——宋庆龄 文章目录 🎄一、链表内指定区间翻转🎉二、从链表中删去总和值为零的节点🚀三、链表求和&…...
DeepSeek执行流程加速指南:跨框架转换与编译优化的核心策略全解析
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
解决 Conda 安装 PyTorch 1.1.0 报错:excluded by strict repo priority(附三种解决方案)
# 💥解决 Conda 安装 PyTorch 1.1.0 报错问题:excluded by strict repo priority在使用旧版本 PyTorch(例如 1.1.0)时,有些开发者会遇到以下 conda 安装报错:LibMambaUnsatisfiableError: package pytorch-…...
面试从微前端拓展到iframe是如何通信的
一、跨域通信 1、父页面发消息给 iframe const iframe document.getElementById(myIframe); iframe.contentWindow.postMessage(form parent, https://iframe-domain.com)// iframe 接收 window.addEventListener(message, (event) > {if (event.origin ! https://paren…...
PyTorch循环神经网络(Pytotch)
文章目录 循环神经网络(RNN)简单的循环神经网络长短期记忆网络(LSTM)门控循环单元(GRU) 循环神经网络(RNN) 循环神经网络(RecurrentNeuralNetwork,RNN&#…...
django中用 InforSuite RDS 替代memcache
在 Django 项目中,InforSuite RDS(关系型数据库服务)无法直接替代 Memcached,因为两者的设计目标和功能定位完全不同: 特性MemcachedInforSuite RDS核心用途高性能内存缓存,临时存储键值对数据持久化关系型…...
Git 常用命令详解
Git 常用命令详解(含详细示例) 本文整理了 Git 日常使用中最常用的命令,适合初学者和日常查阅,如有错误,敬请指正,谢谢! ☁️ Git 使用流程入门(从 pull 和 push 开始) …...
AI、机器学习、深度学习:一文厘清三者核心区别与联系
AI、机器学习、深度学习:一文厘清三者核心区别与联系 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,可以分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/ccc 前言 在人工智能技术席卷全球的今天&…...
《数字藏品社交化破局:React Native与Flutter的创新实践指南》
NFT,这种非同质化代币,赋予了数字资产独一无二的身份标识,从数字艺术作品到限量版虚拟物品,每一件NFT数字藏品都承载着独特的价值与意义。当React Native和Flutter这两大跨平台开发框架遇上NFT数字藏品,一场技术与创意…...
工业操作系统核心技术揭秘
摘要 随着工业 4.0 与智能制造的深入推进,工业操作系统作为工业数字化转型的核心支撑,其技术发展备受关注。本文深入剖析工业操作系统的核心技术,包括实时性保障机制、硬件抽象层设计、多任务管理策略等,结合技术原理与实际应用场…...
Python logging模块使用指南
Python 的 logging 模块是一个灵活且强大的日志记录工具,广泛应用于应用程序的调试、运行监控和问题排查。它提供了丰富的功能,包括多级日志记录、多种输出方式、灵活的格式配置等。以下是详细介绍: 一、为什么使用 logging 模块?…...
沃伦森智能无功补偿系统解决电力电容器频繁投切的隐患
在现代电力系统中,无功补偿设备的稳定运行直接影响电网质量。然而,电力电容器的频繁投切问题长期存在,如同电网的“慢性病”,不仅加速设备老化,还可能引发系统性风险。作为电力电子领域的领军企业,沃伦森电…...
【HarmonyOS 5】鸿蒙mPaaS详解
【HarmonyOS 5】鸿蒙mPaaS详解 一、mPaaS是什么? mPaaS 是 Mobile Platform as a Service 的缩写,即移动开发平台。 蚂蚁移动开发平台mPaaS ,融合了支付宝科技能力,可以为移动应用开发、测试、运营及运维提供云到端的一站式解决…...
PyTorch中.item()函数:提取单元素张量值
PyTorch中,.item()函数是什么 在PyTorch代码中,.item() 主要用于从一个只包含单个元素的张量(Tensor)中提取出对应的Python标量值 ,具体作用和使用场景如下: 作用 获取数值:当通过计算得到一个张量,且该张量仅包含一个元素时,使用 .item() 方法可以方便地将这个元素…...
PyTorch LSTM练习案例:股票成交量趋势预测
文章目录 案例介绍源码地址代码实现导入相关库数据获取和处理搭建LSTM模型训练模型测试模型绘制折线图主函数 绘制结果 案例介绍 本例使用长短期记忆网络模型对上海证券交易所工商银行的股票成交量做一个趋势预测,这样可以更好地掌握股票买卖点,从而提高…...
ARM A64 LDR指令
ARM A64 LDR指令 1 LDR (immediate)1.1 Post-index1.2 Pre-index1.3 Unsigned offset 2 LDR (literal)3 LDR (register)4 其他LDR指令变体4.1 LDRB (immediate)4.1.1 Post-index4.1.2 Pre-index4.1.3 Unsigned offset 4.2 LDRB (register)4.3 LDRH (immediate)4.3.1 Post-index…...
一些问题杂记
1. 在 SSH 会话/bash中仅使用cat命令查看文件后使用umount命令提示挂载点繁忙,lsof命令查看是bash有占用,但是并没有打开文件之类的情况 原因:当前工作目录仍在挂载点内,使用cat查看文件时,可能当前工作目录ÿ…...
【OpenGL学习】(一)创建窗口
文章目录 【OpenGL】(一)创建窗口 【OpenGL】(一)创建窗口 GLFW OpenGL 本身只是一套图形渲染 API,不提供窗口创建、上下文管理或输入处理的功能。 GLFW 是一个支持创建窗口、处理键盘鼠标输入和管理 OpenGL 上下文的…...
RTSP 播放器技术探究:架构、挑战与落地实践
RTSP 播放器为什么至今无法被淘汰? 在实时视频传输领域,RTSP(Real-Time Streaming Protocol)作为最基础、最常见的协议之一,至今依然被广泛用于监控设备、IP Camera、视频服务器等设备中。然而,要构建一个稳…...
【问题记录】08 MAC电脑,安装HP打印机驱动,提示:此更新需要macOS版本15.0或更低版本
问题描述: MAC电脑,升级了新系统之后(v15.4.1)。 这时,安装惠普(HP)打印机驱动,提示:This update requires macOS version 15.0 or earlier(此更新需要macOS…...
场景新零售:基于开源AI大模型AI智能名片S2B2C商城小程序源码的商业本质回归与创新
摘要:本文聚焦场景新零售,探讨在新生代消费群体推动下传统零售模式的创新升级。通过分析新生代消费群体的特点以及场景新零售的发展趋势,阐述开源AI大模型AI智能名片S2B2C商城小程序源码在场景新零售中的应用优势,包括精准营销、供…...
16.2 VDMA视频转发实验之模拟源
文章目录 1 实验任务2 系统框图3 硬件设计3.1 IP核配置3.2 注意事项3.3 自定义IP核源码 1 实验任务 基于14.1,相较于16.1,使用自定义IP核vid_gen_motion替换Xilinx TPG IP核。 2 系统框图 基于14.1,添加自定义IP核vid_gen_motion作为视频源…...
PADS 9.5安装教程
1.安装包 https://pan.baidu.com/s/1bt6vE3y8VEmlFwJfoV32nA?pwdj2cg 2.PADS 9.5安装教程 PADS 9.5安装教程(Windows11、超详细版)_pads9.5-CSDN博客 3.出现的问题 1.打开无法使用鼠标滚轮 Win10 pads卡死问题解决,输入法的兼容性问…...
趣味编程:钟表
目录 1. 效果展示 2. 源码展示 3. 逻辑概述 3.1 表针绘制函数(DrawHand) 3.2 表盘绘制函数 3.3 主程序逻辑 4. 小结 概述:本篇博客主要介绍简易钟表的绘制。 1. 效果展示 该钟表会随着系统的时间变化而变化,动态的效…...
.NET 通过命令行解密web.config配置
在.NET应用系统中,保护数据库连接字符串的安全性至关重要。.NET 提供了一种通过 DataProtectionConfigurationProvider 加密连接字符串的方法,以防止敏感数据泄露。然而,在内网信息收集阶段,攻击者只需在目标主机上运行aspnet_regiis.exe这个命令行工具即可完成解密,获取数…...
【MySQL】多表连接查询
个人主页:Guiat 归属专栏:MySQL 文章目录 1. 多表连接查询概述1.1 连接查询的作用1.2 MySQL支持的连接类型 2. 内连接 (INNER JOIN)2.1 内连接的特点2.2 内连接语法2.3 内连接实例2.4 多表内连接 3. 左外连接 (LEFT JOIN)3.1 左外连接的特点3.2 左外连接…...
【AI论文】用于评估和改进大型语言模型中指令跟踪的多维约束框架
摘要:接下来的指令评估了大型语言模型(LLMs)生成符合用户定义约束的输出的能力。 然而,现有的基准测试通常依赖于模板化的约束提示,缺乏现实使用的多样性,并限制了细粒度的性能评估。 为了填补这一空白&…...
应用BERT-GCN跨模态情绪分析:贸易缓和与金价波动的AI归因
本文运用AI量化分析框架,结合市场情绪因子、宏观经济指标及技术面信号,对黄金与美元指数的联动关系进行解析,揭示本轮贵金属回调的深层驱动因素。 周三,现货黄金价格单日跌幅达2.1%,盘中触及3167.94美元/盎司关键价位&…...
低成本高效图像生成:GPUGeek和ComfyUI的强强联合
一、时代背景 在如今的数字化时代,图像生成技术正不断发展和演变,尤其是在人工智能领域。无论是游戏开发、虚拟现实,还是设计创意,图像生成已成为许多应用的核心技术之一。然而,随着图像质量需求的提升,生成…...
React 第四十二节 Router 中useLoaderData的用途详解
一、前言 useLoaderData,用于在组件中获取路由预加载的数据。它通常与路由配置中的 loader 函数配合使用,用于在页面渲染前异步获取数据(如 API 请求),并将数据直接注入组件,从而简化数据流管理。 二、us…...
【NLP 74、最强提示词工程 Prompt Engineering 从理论到实战案例】
一定要拼尽全力,才能看起来毫不费劲 —— 25.5.15 一、提示词工程 1.提示词工程介绍 Ⅰ、什么是提示词 所谓的提示词其实就是一个提供给模型的文本片段,用于指导模型生成特定的输出或回答。提示词的目的是为模型提供一个任务的上下文,以便模…...
GPUGeek云平台实战:DeepSeek-R1-70B大语言模型一站式部署
随着人工智能技术的迅猛发展,特别是在自然语言处理领域,大型语言模型如DeepSeek-R1-70B的出现,推动了各行各业的变革。为了应对这些庞大模型的计算需求,云计算平台的普及成为了关键,特别是基于GPU加速的云平台…...
【抽丝剥茧知识讲解】引入mybtis-plus后,mapper实现方式
目录 前言一、传统 Mapper 接口方式二、继承 BaseMapper 的方式三、自定义通用 Mapper 的方式四、使用 MyBatis-Plus 的 ActiveRecord 模式五、使用 MyBatis-Plus 的 IService 接口六、使用建议 前言 mapper文件,作为Mybatis框架中定义SQL语句和映射关系的配置文件&…...
AI浪潮:开启科技新纪元
AI 的多面应用 AI 的影响力早已突破实验室的围墙,在众多领域落地生根,成为推动行业变革的重要力量。 在医疗领域,AI 宛如一位不知疲倦的助手,助力医生提升诊疗效率与准确性。通过对海量医学影像的深度学习,AI 能够快…...
制造业工厂的三大核心系统:ERP+PLM+MES
对于一家制造业工厂来说,要实现数字化转型,哪几个系统最重要?答案是:ERP,PLM和MES这三个核心系统最为重要!本文就为你快速地概览地介绍一下这三个系统 以及 它们之间的关联关系。 ERP:企业资源计划 ERP的全称是Enterprise Resource Planning,即企业资源计划系统。 它…...
驱动-定时-秒-字符设备
文章目录 目的相关资料参考实验驱动程序-timer_dev.c编译文件-Makefile测试程序-timer.c分析 加载驱动-运行测试程序总结 目的 通过定时器timer_list、字符设备、规避竞争关系-原子操作,综合运用 实现一个程序,加深之前知识的理解。 实现字符设备驱动框…...
(面试)Handler消息处理机制原理
Handler是用于实现线程间通信和任务调度的一种机(Handler、 Looper、MessageQueue、 Message)。Handler 允许线程间发送Message或Runnable对象进行通信。在Android中UI修改只能通过UI Thread,子线程不能更新UI。如果子线程想更新UI࿰…...
WebRTC 通话原理:从协商到通信
在实时音视频通信领域,WebRTC(Web Real-Time Communication)凭借其开源、无需插件且能在浏览器中直接实现高质量通信的特性,成为开发者的热门选择。本文将深入解析 WebRTC 通话原理,涵盖媒体协商、网络协商、网络穿越&…...
InforSuite AS 可以发布django和vue项目是否可行
InforSuite AS 是浪潮推出的企业级中间件平台,主要用于应用集成、流程管理、数据交换等场景,其核心功能更偏向于 Java EE 应用的部署和管理(如支持 WAR/EAR 包)。关于能否直接发布 Django(Python 框架)和 V…...
【中级软件设计师】网络攻击(附软考真题)
【中级软件设计师】网络攻击(附软考真题) 目录 【中级软件设计师】网络攻击(附软考真题)一、历年真题二、考点:网络攻击1、拒绝服务攻击(DoS攻击)2、重放攻击3、特洛伊木马4、网络监听5、SQL注入…...
CSS图片垂直居中问题解决方案
在 CSS 中,使用 vertical-align: middle 导致图片略微向下偏移的现象,本质上是由于 行内元素的基线对齐规则 和 父容器上下文环境 共同作用的结果。以下是具体原因和解决方案: 原因详解 1. vertical-align: middle 的真实含义 该属性 不会让…...
P1601 A+B Problem(高精)
题目描述 高精度加法,相当于 ab problem,不用考虑负数。 输入格式 分两行输入。a,b≤10500。 输出格式 输出只有一行,代表 ab 的值。 输入输出样例 输入 1 1 输出 2 输入 1001 9099 输出 10100 说明/提示 20% 的测试数据…...
鸿蒙OSUniApp实现个性化的搜索框与搜索历史记录#三方框架 #Uniapp
使用UniApp实现个性化的搜索框与搜索历史记录 在移动端应用开发中,搜索功能几乎是标配,而一个好的搜索体验不仅仅是功能的实现,更是用户留存的关键。本文将分享如何在UniApp框架下打造一个既美观又实用的搜索框,并实现搜索历史记录…...
鸿蒙OSUniApp 制作自定义弹窗与模态框组件#三方框架 #Uniapp
UniApp 制作自定义弹窗与模态框组件 前言 在移动应用开发中,弹窗和模态框是用户交互的重要组成部分,它们用于显示提示信息、收集用户输入或确认用户操作。尽管 UniApp 提供了基础的交互组件如 uni.showModal() 和 uni.showToast(),但这些原…...
web第一次课后作业--运行一个java web项目
一、创建java web项目 1.新建java EE --> 模版:Web应用程序 2.选择版本:Java EE 8 3. 配置tomcat 二、页面效果 默认页面 跳转页面 三、代码 3.1 默认页面 <% page contentType"text/html; charsetUTF-8" pageEncoding"UTF-8…...
工业互联网
工业互联网全景解析 工业互联网是工业数字化、网络化、智能化转型升级的重要抓手,是实现中国制造 2025 战略目标的重要路径,对于推动我国实体经济高质量、可持续发展,建设制造强国、网络强国,意义重大。2017 年,我国提…...
论QT6多线程技术
前言 以前我多线程使用传统的继承qthread重写run()或者继承qrunable类把对象丢到线程池解决。经过昨天的面试让我了解到新的技术,我之前看到过只不过没有详细的去了解movetotread技术,这个技术是qt5推出的,qt6还在延续使用 代码结构 以下是…...
TensorFlow深度学习实战(16)——注意力机制详解
TensorFlow深度学习实战(16)——注意力机制详解 0. 前言1. 引入注意力机制2. 注意力机制2.1 注意力机制原理2.2 注意力机制分类 3. 添加注意机制的 Seq2Seq 模型3.1 数据处理3.2 模型构建与训练3.3 模型性能评估 小结系列链接 0. 前言 在传统的神经网络…...
架空防静电地板材质全解析:选对材质,守护精密空间的“安全卫士”
在现代科技驱动的社会中,无论是数据中心、实验室、手术室,还是高端电子厂房,静电都是精密设备的“隐形杀手”。而架空防静电地板作为这些场所的“安全卫士”,其材质选择直接决定了防静电性能、承重能力及使用寿命。今天࿰…...