2240 字
11 分钟
经验-2025年南大智科开放日(夏令营)
2025-07-26
2026-07-26
⚠️ 注:本文仅为作者个人日记,不构成任何形式的指南或保证。本文信息可能过时或不适用于你的具体情况。因参考本文产生的任何后果,作者概不负责。

时间:2025年7月24日-7月26日

基本信息及个人复习经历#

共300+人入营。

邮件发布的安排如下(有伏笔):

第一天 面试(双盲<不得提及本人姓名,或以其他形式暗示本人身份信息>,满分150分,及格线90分。申请人无需准备PPT,可携带个人简历<限1页A4纸,不得提及本人姓名>3份;每位申请人陈述时间2-3分钟)

第二天上午9:30-11:30 机试(闭卷,满分100分。考察C++程序设计、数据结构与算法等知识,涉及 C++, Python等编程语言)

第二天下午13:00-15:00 笔试(闭卷,满分100分。考察人工智能、机器学习、离散数学、数据结构与算法)

第三天 自由交流

针对这份安排及2024年情况,重点复习了

  • 机试:Leetcode Hot100 刷了两遍,做到能看到题面就回忆起基本做法。
  • 笔试:离散数学【群论、图论、集合论、关系论、数论、组合数学】、数据结构与算法【主要是图部分】、机器学习【西瓜书前10章及配套代码练习】

后来发现自己绝大多数“针对性”的复习一点用都没有(×

第一天 面试#

分为11组,每组3个老师负责面试。平均每个人10分钟。

准备了非常多的专业课…结果一点都没问,连项目细节也是如此,仅仅问了下“具体做了什么贡献”以及确认了“大概是个什么项目”。纯纯的聊天面。

英语环节还是在的,每个人被要求用英语介绍的东西不一样,不过我个人没认真准备,也完全没意料到老师会问什么问题,说的非常灾难。

问了有没有报名其他学校。

因为自己的简历提到了一些爱好,老师针对爱好提了很多问题。。。。

最后也是让反向提问,只不过缺乏面试经验的我话都说不利索了。。。。

第二天 机试#

电脑上有vscode、Dev-cpp、Clion等IDE,通过小纸条上的链接下载试题,通过NJU-box上传答案(即无OJ,三次提交机会),这些都和去年一样。

但今年没有了机器学习代码题,前两题为强制使用python的算法题,后两题为强制使用C++的算法题。

回收伏笔——原来邮件内容说的一个字都没错!把“等”字都删掉,就变成【考察C++程序设计、数据结构与算法,涉及 C++, Python】,没错,C++和Python都要考!说实话当读到邮件这句话的时候是有想过这种可能的,毕竟去年有强制使用C语言的题目。但没想到真的会这么干。

以下是具体题目(数据范围都很小)

Q1:

输入数据行数n,随后是n行数据,每行第一个数字代表微博发送者的ID,第二个数字代表该发送者@到的人数,剩下的若干数字代表该微博@到的人。需要做的是统计输出被提到(次数 or 人数?此处我和部分同学对题意的理解不同,会影响答案,不知道谁是对的)最多的人,并输出所有@到该人的微博发送者ID。

自己瞎编的样例:

输入
3
114514 5 1 2 3 2 4
1919 2 1 2
1 2 3 4
2 2 2 5
输出
2
114514 1919 2

纯考python语法来的。

Q2:

输入数据行数n,随后是n行数据,每行是两个数字代表一个区间,选取尽可能多的区间使得这些区间互不相交,输出该最大区间数。

经典贪心。按照右端点升序排序。【我按左端点排序了我在干什么】

正确性证明:假设我们有一个最优解 OO,而我们的贪心解 GG 是每次选右端点最早的区间。 我们来证明 GG 不会比 OO 差。

步骤1:对比第一个选择

  • GG 选择的第一个区间是右端点最小的区间,记为 g1g_1
  • OO 选择的第一个区间是 o1o_1

因为 g1g_1 的右端点不大于 o1o_1 的右端点, 我们可以把 OO 的第一个区间替换成 g1g_1,不会影响剩下的区间安排。

这一步的关键是: g1g_1 结束时间更早或一样早,所以不会和 OO 的后续区间冲突。

步骤2:递归继续

替换完第一个区间后,问题变成“从剩下的区间中选择最多的区间”,依然满足相同的性质。 用同样的方法递归下去,最终可以把最优解 OO 转换成我们的贪心解 GG,并且选择的区间数量不减少。

Q3:

给定字符串,最多连续出现多少次给定子串?

自己瞎编的样例:

输入
abcbcbcb bc
输出
2
输入
abcbcbcb cb
输出
3

难绷群里一堆讨论字符串匹配算法的给我整不会了。其实一遍扫描就能解决。

Q4:

给定树(root),求最深一层所有节点权值之和。

过于简单了吧。。。。。。。层序遍历。注意边界情况。

第二天 笔试#

和24年一样的8道题,但这里再次回收伏笔,邮件内容和去年的区别在于增加了“人工智能”一词,删去了概率论。

内容无比简单。感觉毫无区分度(但我还是错了两道呜呜)

实际考了

Q1:选择题,要会k进制比大小、8421BCD码、布尔代数(求给定式的最小项个数)

Q2:一阶命题逻辑转化,找有无矛盾

Q3:启发式算法【是的,这是我们《人工智能导论》专业课的内容】

Q4:(一元二次函数)梯度下降手算

Q5:(二维)线性回归梯度下降手算

Q6:(三个二维点)PCA手算

Q7:Kruskal和Prim算法手算

Q8:斐波那契递归/迭代的时间复杂度分析

Q2我脑子短路了最后推出个不存在矛盾(这一题暴亏)

Q3没复习早就忘了。瞎蒙的。


启发式算法复习#

g(x):从起点到当前节点的实际代价。

h(x):从当前节点到目标节点的估计代价(启发函数)。

A* 算法(A-Star)

加权方式:f(x) = g(x) + h(x)

  • 说明:这是最经典的启发式搜索算法,h(x) 必须是可接受的

Greedy Best-First Search(贪心最佳优先搜索)

加权方式:f(x) = h(x)

  • 说明:只考虑启发函数,完全忽略实际代价。速度快但不保证最优。

要保证启发式搜索算法能找到最优解(即代价最小的路径),必须满足以下两个条件:

  1. 可接受性(Admissibility)
  • 启发函数 h(x) 必须不能高估从当前节点到目标的真实代价。
  • 也就是说:h(x) ≤ h*(x),其中 h*(x) 是从节点 x 到目标的真实最小代价。
  • 这个条件保证 A* 不会跳过任何可能更优的路径。
  1. 一致性(Consistency,或单调性)
  • 一致性是一个更强的条件,它要求启发函数满足三角不等式:
    h(x) ≤ c(x, y) + h(y)
    其中 c(x, y) 是从节点 x 到其邻居 y 的代价。
  • 一致性不仅保证最优性,还保证 A* 的效率(每个节点最多扩展一次)。

练习(即本次笔试Q3)

启发式路径算法是一种启发式搜索算法,它的评估函数是 f(n)=(2w)g(n)+wh(n)f(n) = (2 - w)g(n) + wh(n),假设 hh 是可采纳(admissible)的,ww 取什么值能保证算法的最优性?当 w=0w = 0, w=1w = 1, w=2w = 2 时,分别对应什么搜索算法?

f(n)=(2w)[g(n)+w2wh(n)](2w)[g(n)+h(n)]f(n) = (2 - w)[g(n) + \frac{w}{2 - w}h(n)] \triangleq (2 - w)[g(n) + h'(n)]

则必须有 h(n)h(n)h'(n) \leq h(n) 也即 w2w1\frac{w}{2 - w} \leq 1 也即 w1w \leq 1 才能保证算法的最优性。

  • w=0w = 0 时对应一致代价算法,
  • w=1w = 1 对应 A* 算法,
  • w=2w = 2 对应贪心算法。

第三天及总结#

第二天考完试开了一个学院宣讲会(实际上感觉是工程硕博宣讲会hhh)

然后就没有统一安排了,可以找意向老师交流,不交流的就可以走人啦~

总之自己发挥的非常一般,之前的复习完全偏离了方向。除了“好热闹呀我们智科院”也没什么更多的感想了。

结果#

TODO

经验-2025年南大智科开放日(夏令营)
https://stivine.github.io/posts/experience-nju-is-open-day-summer-camp-2025/
作者
藤君
发布于
2025-07-26
许可协议
CC BY-NC-SA 4.0