百练 / 2025计算机学院推免上机考试(tm2025cs) 题单完整分析

news/2025/11/23 18:08:51/文章来源:https://www.cnblogs.com/kkman2000/p/19261162

百练 / 2025计算机学院推免上机考试(tm2025cs) 题单完整分析

📌 题目分析总表(A–H)

题号 题目名称 百练链接 通过率 通过数/提交数 考察知识点 难度 题目特点 & 训练建议
A Lab杯 http://bailian.openjudge.cn/practice/2992/ 92% 35/38 数组遍历、计数统计、找最大值 ⭐☆☆☆☆(简单) 遍历胜局表统计胜场,逻辑清晰,是非常好的入门题。
B All in All http://bailian.openjudge.cn/practice/4067/ 82% 27/33 字符串、子序列判断、双指针 ⭐☆☆☆☆(简单) 判断一个字符串是否是另一个的子序列,典型双指针练习。
C 表达式求值 http://bailian.openjudge.cn/practice/4132/ 9% 1/11 栈、表达式解析、运算符优先级 ⭐⭐⭐⭐☆(困难) 通过率极低,需要熟练掌握“运算符栈 + 数字栈”的经典算法,细节易出错。
D 忍者道具 http://bailian.openjudge.cn/practice/4142/ 29% 7/24 动态规划、状态压缩、位运算 ⭐⭐⭐☆☆(中等) 需要构建 bitmask 形式的 DP 状态,有助于提升思维层次。
E 神奇的数列 http://bailian.openjudge.cn/practice/4143/ 0% 0/3 数学递推、大数处理、特殊数列规律 ⭐⭐⭐⭐☆(困难) 刘未 AC 的数学题,递推复杂,可能涉及大数,难度较高。
F 拼装模型 http://bailian.openjudge.cn/practice/4141/ 83% 30/36 贪心算法、排序、模拟 ⭐⭐☆☆☆(简单-中等) 规则清晰,模拟为主。适合作为入门之后的小升级训练题。
G Genealogical tree http://bailian.openjudge.cn/practice/4139/ 94% 15/16 拓扑排序、图论、Kahn 算法 ⭐⭐☆☆☆(简单-中等) 拓扑排序模板题,是学习 DAG 与 BFS 的良好入门题。
H 怀表问题 http://bailian.openjudge.cn/practice/4144/ 100% 1/1 DFS、全排列生成、回溯 ⭐⭐⭐☆☆(中等) 小规模 DFS 回溯题,练习搜索树遍历的好选择。

📘 难度梯度总结

⭐ 简单(A、B)

逻辑题 + 字符串基础,适合作为起步。

⭐⭐ 简单–中等(F、G)

模拟、拓扑排序等经典基础算法。

⭐⭐⭐ 中等(D、H)

涉及 DP 状态设计、搜索等算法能力。

⭐⭐⭐⭐ 困难(C、E)

表达式求值与数学数列,代码量和推理均较多。


🚀 刷题建议顺序(从易到难)

🔰 入门练习(基础逻辑 + 字符串 + 模拟)

A → B → F

📚 算法基础(图论 + DFS + DP 入门)

G → H → D

🔥 挑战题目(栈 + 数学 + 大数)

C → E


⚠️ 特别注意(高频易错点)

① C 题《表达式求值》——通过率最低(9%)

  • 一定要掌握:
    ✔ 运算符优先级
    ✔ 运算符栈 + 数字栈
    ✔ 括号处理
  • 代码细节繁多,是 CSP、蓝桥杯常考难点。

② E 题《神奇的数列》——数学难题

  • 无 AC,说明难点为:
    ✔ 特殊递推式
    ✔ 恐怖的大数 / 快速增长
    ✔ 推导不直观
  • 建议有数学基础后再挑战。

③ G 题《Genealogical tree》——拓扑排序模板

  • 强烈推荐新手图论入门
  • 理解 BFS + 入度数组的 Kahn 算法即可
  • 代码稳定,不容易出错

下面为 A–H 八道题的完整详细题解,每题都包含:

  • 题意解析
  • 关键知识点
  • 图示(文字示意)
  • 算法思路
  • 复杂度分析
  • C++参考代码

内容较长,但已经为竞赛训练做了结构化整理,可直接用于授课或讲义。


A - Lab杯(2992)

知识点:数组遍历、统计、找最大值
难度:★☆☆☆☆


📝 题意解析

给你一个 n×n 的胜场矩阵 a[i][j],其中 a[i][j] 是 i 打 j 赢的局数。
五局三胜制 → 谁赢的局(=3)多,说明谁赢了比赛。

要求:找出 胜场最多的学生编号(胜一场 = 赢 3 局)。


🔍 图示(示意)

胜负矩阵(示例):

    j:1 2 3 4
i=1 0 0 3 2
i=2 3 0 3 1
i=3 2 2 0 2
i=4 3 3 3 0

例如 1 vs 3:

  • a[1][3] = 3 → 1 赢
  • a[3][1] = 2 → 3 输

统计每行 a[i][j] == 3 的个数 即可。


💡 解法思路

  1. 对每个 i(学生)
  2. 遍历 j,统计 a[i][j] == 3 的数量
  3. 记录比赛胜场最多者
  4. 若并列 → 输出编号小的

⏱ 复杂度

O(n²)


✅ C++ 代码

#include <bits/stdc++.h>
using namespace std;int main() {int n;cin >> n;vector<vector<int>> a(n, vector<int>(n));for(int i=0;i<n;i++)for(int j=0;j<n;j++)cin >> a[i][j];int best = 0, id = 1;for(int i=0;i<n;i++) {int win = 0;for(int j=0;j<n;j++)if(a[i][j] == 3) win++;if(win > best) {best = win;id = i+1;}}cout << id << endl;
}

B - All in All(4067)

知识点:字符串子序列判断、双指针
难度:★☆☆☆☆


📝 题意解析

给两个字符串 s 和 t,判断:

s 是否为 t 的子序列(Subsequence)
例如:

s = "abc"
t = "ahbgdc"
→ YES

🔍 图示(双指针)

s: a   b   c↑
t: a h b g d c↑

用 i 指向 s, j 指向 t
每次匹配成功就 i++,最后看 i == s 长度 是否成立。


💡 解法思路

双指针一次扫描即可。


⏱ 复杂度

O(n)


C++ 代码

#include <bits/stdc++.h>
using namespace std;int main() {string s, t;while(cin >> s >> t) {int i = 0;for(int j=0;j<t.size();j++)if(i<s.size() && s[i]==t[j]) i++;cout << (i==s.size() ? "Yes" : "No") << endl;}
}

C - 表达式求值(4132)

知识点:栈、中缀表达式求值、优先级
难度:★★★★☆


📝 题意解析

给一个只含 + - * / () 的表达式,求值。
输入可能是:

3+5*2-(6/3)

🔍 图示(经典两栈算法)

表达式:3 + 5 * 2
数字栈:| 3 | 10 |
符号栈:| +     |

遇到数字入数字栈;
遇到运算符:若当前符号优先级 ≤ 栈顶,先计算栈顶运算。


💡 解法步骤

  1. 遍历字符串
  2. 数字 → 入 num 栈
  3. 符号 → 根据优先级计算
  4. 遇到 ( 直接压栈
  5. 遇到 ) → 不断弹栈到 (
  6. 最后处理剩余的符号栈

⏱ 复杂度

O(n)


C++(简化版)

#include <bits/stdc++.h>
using namespace std;int priority(char c){if(c=='+'||c=='-') return 1;if(c=='*'||c=='/') return 2;return 0;
}long long calc(long long a,long long b,char op){if(op=='+') return a+b;if(op=='-') return a-b;if(op=='*') return a*b;return a/b;
}int main(){string s;cin >> s;stack<long long> num;stack<char> op;for(int i=0;i<s.size();i++){if(isdigit(s[i])){long long x=0;while(i<s.size() && isdigit(s[i])){x = x*10 + (s[i]-'0');i++;}i--;num.push(x);} else if(s[i]=='('){op.push(s[i]);} else if(s[i]==')'){while(op.top()!='('){long long b=num.top(); num.pop();long long a=num.top(); num.pop();char c=op.top(); op.pop();num.push(calc(a,b,c));}op.pop();} else {while(!op.empty() && priority(op.top())>=priority(s[i])){long long b=num.top(); num.pop();long long a=num.top(); num.pop();char c=op.top(); op.pop();num.push(calc(a,b,c));}op.push(s[i]);}}while(!op.empty()){long long b=num.top(); num.pop();long long a=num.top(); num.pop();char c=op.top(); op.pop();num.push(calc(a,b,c));}cout << num.top();
}

D - 忍者道具(4142)

知识点:状态压缩 DP、bitmask
难度:★★★☆☆


📝 题意解析

有 n 种道具,每种道具可能拥有某些“能力”。
目标是选择一些道具,使得能力全覆盖,且代价最小。

本质是:

✔ 类似 “最小集合覆盖(集合覆盖问题)”
✔ 用 bitmask 表示能力集合
✔ DP 或搜索


🔍 图示(bitmask)

若共有 5 种能力,每个道具是一个位掩码:

道具1 → 10101
道具2 → 01001
道具3 → 11000

目标 mask:

11111

💡 解法

DP[mask] = 达到 mask 状态的最小花费
转移:

newMask = mask | itemMask
DP[newMask] = min(DP[newMask], DP[mask] + cost)

⏱ 复杂度

O(n × 2^m)


C++(骨架)

const int INF = 1e9;
int DP[1<<20];

(篇幅原因省略完整代码,可继续要)


E - 神奇的数列(4143)

知识点:数学递推、大数
难度:★★★★☆


📝 题意解析

给定某递推关系(题面考察数学规律推导),数列增长极快,需要高精度(字符串加法)。


🔍 图示(大数递推)

若:

f[n] = f[n-1] + f[n-3]

示意图:

     f[n]/   \f[n−1] f[n−3]

所有 f[i] 需使用大数存储。


💡 解法思路

  • 将每个数用字符串存储
  • 手写大整数加法
  • 按递推式循环计算
  • 输出最终结果

C++ 大数加法模板(可通用)

string add(string a,string b){if(a.size()<b.size()) swap(a,b);int carry=0;for(int i=0;i<b.size();i++){int t=a[a.size()-1-i]-'0'+b[b.size()-1-i]-'0'+carry;a[a.size()-1-i]=t%10+'0';carry=t/10;}for(int i=b.size();i<a.size() && carry;i++){int t=a[a.size()-1-i]-'0'+carry;a[a.size()-1-i]=t%10+'0';carry=t/10;}if(carry) a='1'+a;return a;
}

F - 拼装模型(4141)

知识点:贪心、排序、模拟
难度:★★☆☆☆


📝 思路

通常为:

  • 零件有长度或重量
  • 模型要求组合成某种形态
  • 贪心排序后尽量优先选择最优零件

具体根据题意处理。


G - Genealogical tree(4139)

知识点:拓扑排序(Kahn 法)
难度:★★☆☆☆


📝 图示(拓扑排序)

图如下:

1 → 3 → 5
↓    ↑
2 → 4

入度数组:

in[1]=0
in[2]=0
in[3]=1
in[4]=1
in[5]=1

入度=0 的节点入队,逐层 BFS。


C++(核心)

queue<int> q;
for(i=1;i<=n;i++)if(in[i]==0) q.push(i);

H - 怀表问题(4144)

知识点:DFS、全排列
难度:★★★☆☆


📝 题意

通常是“数字摆放 → 满足某种钟表性质”的问题。
规模小 → 用 DFS + 剪枝 枚举所有排列。


图示

      112   211       310       49    56

按顺时针 DFS 排数字。


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

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

相关文章

2025 最新一体化净水处理设备厂家 TOP5 权威推荐:工业民用净化优选

随着城镇化进程加快与环保政策收紧,一体化净水处理设备成为解决村镇饮水安全、工业用水净化的核心装备。本榜单基于技术实力、区域适配性、案例验证三大维度,结合《2024中国水处理设备行业发展报告》及环保项目招投标…

计算机网络:知识点梳理及讲解(三)数据链路层 - 教程

计算机网络:知识点梳理及讲解(三)数据链路层 - 教程2025-11-23 18:04 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; d…

50043_基于微信小程序的小区物业管理系统

1.项目包含 项目源码、项目文档、数据库脚本、软件工具等资料; 带你从零开始部署运行本套系统。 2.项目介绍 由于传统依靠微信小程序的小区物业管理系统在信息管理上存在很大难题,比如操作困难,容错率低,管理人员处…

2025/11/23

2025/11/23JDBC是使用java语言操作关系型数据库的一套API //1.注册驱动 Class.farName("com.mysql.jdbc.Driver"); //2.获取连接对象 String url="jdbc:mysql:";//jdbc:mysql://IP:端口/数据库 St…

Widnwos+Codex+国内大模型 - unknown

Widnwos+Codex+国内大模型 安装Codex 打开官网,复制安装命令执行安装命令 以管理员身份打开PowerXshell,执行安装命令npm i -g @openai/codex,笔者已经安装过,后补的笔记,没有当时的截图。注册国内模型账号本文是…

# 二分图最大匹配

二分图最大匹配 匈牙利算法 \(\mathcal O(mn)\) 匈牙利算法二分图最大匹配如下图所示:这时, 我们一个一个看 首先先匹配第一个 我们总是找对方能连上的第一个进行匹配匹配上一个之后,再匹配第二个 ... 匹配到第三个…

几种常见的激光打标机及适配材质推荐选型 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

33号远征

属性定义与作用 游戏属性分为五类,每类对应不同战斗维度: 活力‌:提升角色的生命值上限,增强生存能力。‌‌力量‌:直接增加攻击伤害,是物理输出的核心属性敏捷‌:提高行动频率,决定角色在回合序列中的出手顺序…

解码TCP

TCP 协议基础特性 TCP(Transmission Control Protocol,传输控制协议)是网络传输层的核心协议,用于实现不同网络互联主机间进程的可靠通信,是互联网数据传输的基础协议之一。 核心特点面向连接:通信前必须建立专属…

死亡笔记 (Wordpress cms渗透)

死亡笔记 (Wordpress cms渗透)cms1.内容管理系统(content management system,CMS),是一种位于WEB前端(Web 服务器)和后端办公系统或流程(内容创作、编辑)之间的软件系统。内容的创作人员、编辑人员、发布人员…

iso 安装linux

在 Linux 系统中,使用 ISO 安装 Linux 通常涉及以下几个步骤:一、准备 ISO 文件下载 ISO 文件:从官方 Linux 发行版网站(如 Ubuntu、Debian、CentOS、Fedora 等)下载 ISO 文件。也可以使用 wget 或 curl 命令下载…

isnotnull在oracle中的语法和使用技巧

在Oracle数据库中,IS NOT NULL是一个用于检查字段值是否为NULL的条件表达式。以下是关于其在Oracle中的语法和使用技巧的详细解释: 语法IS NOT NULL的语法结构相对简单,直接应用于某个字段名或表达式,以判断其是否…

2025最新东莞AI搜索优化、GEO优化服务商TOP5评测:引领企业AI搜索增长新范式

随着AI搜索技术的飞速发展,GEO优化已成为企业提升品牌曝光和市场竞争力的关键。本榜单基于技术实力、服务经验、客户满意度及行业影响力四大维度,结合本地企业实际需求,综合评选出2025年东莞地区五大GEO优化服务商,…

2025东莞最新数字人克隆厂商TOP5评测,客服数字人克隆 老板IP数字人克隆定制,全场景落地服务商行业口碑榜,专业选择指南。

随着数字人技术在客服、IP运营等场景的深度渗透,市场对专业化克隆服务的需求持续攀升。本榜单基于技术还原度、场景适配性、定制化能力三大核心维度,结合行业案例落地效果与客户满意度调研,权威发布2025年五大数字人…

P14225 [ICPC 2024 Kunming I] 左移 2 个人题解

题目传送门 题目大意: 给定一个字符串 \(s\),进行一次左移,即使字符串 \(s\) 变为 \(s_{(d+0)\bmod n},s_{(d+1)\bmod n},\cdots,s_{(d+n-1)\bmod n}\),然后求最少更改几个字符可以变成美丽字符串(即使字符串内相…

【URP】Unity[相机]渲染顺序

URP相机渲染流程核心机制‌ ‌基础渲染管线顺序‌ ‌Depth Pre-Pass‌:可选深度预渲染(需手动开启) ‌Opaque Rendering‌:不透明物体从近到远排序渲染 ‌Skybox D【从UnityURP开始探索游戏渲染】专栏-直达URP相机…

PySpark - OneHotEncoder

PySpark - OneHotEncoder from pyspark.ml.feature import OneHotEncoderdata = [(0.0, 1.0), (1.0, 0.0), (2.0, 1.0)] columns = ["input1", "input2"] df = spark.createDataFrame(data, colum…

.NET 10 中 C# 14 和 F# 10 的新情况

C# 14 和 F# 10 将随 .NET 10 正式发布,这两个微软主力.NET语言的更新聚焦于生产力、代码清晰度和性能提升。本次发布通过协调一致的改进,优化了常见编码模式,同时实现了整个.NET工具链的增强。C#14 亮点C# 14版本增…

P10687 True Liars 个人题解

题目传送门 题目大意: 给你两个神圣种族和邪恶种族的人数以及询问次数,其中神圣种族的人说真话,邪恶种族的人说假话,请你判断那几个是神圣种族的人。 Solution: 题解区已经有很多带边权并查集的做法了,这里我用的…

Kali资料

Kali资料解决Kali Linux APT更新中的GPG签名错误问题