news 2026/5/14 8:06:44

HNU 算法设计与分析2019年期末考试原题(附自己写的解析)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HNU 算法设计与分析2019年期末考试原题(附自己写的解析)

前言

感谢@甘晴void大佬的分享,找到了这套卷子。

一、单项选择题

题干

解析

1. A

2. B

3. A

4. C

5. D

二、简答题

题干

解析

三、算法应用题

3.1 题干

3.1 解析

考试遇到实在画不开的话,最后一层就写文字说明一下吧

3.2 题干

3.2 解析

3.3 题干

3.3 解析

3.4 题干

3.4 解析

3.5 题干

3.5 解析

四、算法设计题

4.1 题干

4.1 解析

4.2 题干

4.2 解析

算法思想

对每个矩形把两条边排序为,把旋转 90° 的情形统一处理;若矩形 i 要能嵌入到矩形 j,则必须同时满足。因此问题化为在二维向量上寻找二维严格增序的最长链。先按 s 升序、在 s 相同时按 t 降序排序(这样可以避免取到同一 s 的多个元素),然后在排序后的序列上对 t 求严格递增的最长子序列(LIS),长度即为答案。

递推式

设排序后序列为。可定义动态规划:
,若不存在则 dp[i]=1。

最终答案 =

伪代码

由于题目里面给了输入和输出,因此伪代码里就加入了 main 函数。

int solve_one_case(vector<pair<int,int>>& rects) { // 将每个矩形标准化为 (s,t) = (min(a,b), max(a,b)) vector<pair<int,int>> p; for (auto &r : rects) { int s = min(r.first, r.second); int t = max(r.first, r.second); p.emplace_back(s, t); } // 按 s 升序,若 s 相同按 t 降序 sort(p.begin(), p.end(), [](const pair<int,int>& A, const pair<int,int>& B) { if (A.first != B.first) return A.first < B.first; return A.second > B.second; }); // 在 t 上求严格递增的最长子序列(LIS)长度,二分法实现 vector<int> tails; // tails[i] = 最小的尾值,使得存在长度为 i+1 的严格递增子序列 for (auto &pr : p) { int t = pr.second; auto it = lower_bound(tails.begin(), tails.end(), t); // 严格上升 -> lower_bound if (it == tails.end()) tails.push_back(t); else *it = t; } return (int)tails.size(); } int main() { int T; if (!(cin >> T)) return 0; while (T--) { int n; cin >> n; vector<pair<int,int>> rects(n); for (int i = 0; i < n; ++i) cin >> rects[i].first >> rects[i].second; cout << solve_one_case(rects) << '\n'; } return 0; }

分析复杂度

时间复杂度:预处理每个矩形并将其边长归一化为 (s,t) 需要 O(n)。对 n 个 (s,t) 对按 s 升序(s 相同时 t 降序)排序耗时 O(nlog n)。在排序后的序列上用二分法维护 tails 求严格递增的 LIS,每个元素插入或替换耗 O(log n),总共 O(nlog n)。因此总体时间复杂度为 O(nlog n)。

空间复杂度:主要额外空间用于存储归一化后的对 (s,t) 和用于 LIS 的 tails 数组,均为 O(n)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 6:34:02

Sambert模型许可证是什么?Apache 2.0合规使用指南

Sambert模型许可证是什么&#xff1f;Apache 2.0合规使用指南 1. 什么是Sambert语音合成镜像——开箱即用的中文TTS体验 你有没有遇到过这样的场景&#xff1a;需要快速生成一段带情绪的中文语音&#xff0c;用于产品演示、教学视频或内部测试&#xff0c;但又不想折腾复杂的…

作者头像 李华
网站建设 2026/5/10 1:04:52

企业级AI图像系统搭建趋势:Z-Image-Turbo弹性部署实战分析

企业级AI图像系统搭建趋势&#xff1a;Z-Image-Turbo弹性部署实战分析 1. 为什么企业开始关注Z-Image-Turbo这类轻量级图像生成系统 最近和不少做数字内容生产的团队聊下来&#xff0c;发现一个明显变化&#xff1a;大家不再只盯着动辄需要8张A100、部署周期两周起的大模型方…

作者头像 李华
网站建设 2026/5/12 16:19:26

OCR系统集成实战:cv_resnet18_ocr-detection与业务系统对接

OCR系统集成实战&#xff1a;cv_resnet18_ocr-detection与业务系统对接 1. 为什么需要把OCR检测模型接入业务系统 你是不是也遇到过这些情况&#xff1a;客服每天要手动录入几百张发票信息&#xff0c;电商运营要从上千张商品截图里提取卖点文案&#xff0c;或者企业文档管理…

作者头像 李华
网站建设 2026/5/12 23:50:39

LinkedHashMap 的实现

Java LinkedHashMap&#xff1a;结合哈希表与链表的数据结构 LinkedHashMap 是 Java 集合框架中的一种数据结构&#xff0c;结合了 HashMap 的高效查找特性和 LinkedList 的顺序维护特性。与普通的 HashMap 不同&#xff0c;LinkedHashMap 保留了插入元素的顺序或访问顺序&…

作者头像 李华
网站建设 2026/4/21 12:16:56

思科修复已遭利用的 Unified CM RCE 0day漏洞

聚焦源代码安全&#xff0c;网罗国内外最新资讯&#xff01; 编译&#xff1a;代码卫士 思科已修复位于 Unified Communications 和 Webex Calling中一个严重的RCE漏洞CVE-2026-20045。该漏洞已遭利用。 该漏洞影响思科 Unified CM、Unified CM SME、Unified CM IM & Prese…

作者头像 李华
网站建设 2026/5/10 10:31:12

通义千问3-14B部署教程:Ollama+WebUI双Buff环境搭建步骤详解

通义千问3-14B部署教程&#xff1a;OllamaWebUI双Buff环境搭建步骤详解 1. 为什么选Qwen3-14B&#xff1f;单卡跑出30B级效果的“守门员” 你是不是也遇到过这些情况&#xff1a;想用大模型做长文档分析&#xff0c;但Qwen2-72B显存爆了&#xff1b;想上手开源模型&#xff0…

作者头像 李华