学习经验分享

课内学习 · ACM 竞赛

计算机科学与技术|ACM 俱乐部成员|冯顾炜

个人介绍

  • 计算机科学与技术专业大三学生
  • ACM 俱乐部成员,擅长算法设计与新人辅导
  • 多项 AI 原生全栈项目经历,关注产品从 0 到 1 的落地
  • 分享目标:串联课内、竞赛与项目的成长路径

ACM 获奖情况

  • 2023 年 ICPC 济南区域赛银奖。
  • 2024 年 ICPC 成都区域赛银奖。
  • 2024 年 ICPC 南京区域赛银奖。
  • 2024 年 CCPC 重庆区域赛银奖。
  • 2024 年 ICPC 东亚总决赛银奖。
  • 2025 年 ICPC 西安区域赛银奖。
  • 2025 年 ICPC 南京区域赛铜奖。

总结:越打越菜。

路线总览

  • Part I|课内学习 课程分类 · 绩点计算 · 资源与工具
  • Part II|ACM 竞赛 竞赛简介 · 俱乐部生态 · 训练规划
  • Part III|总结 & 联系 关键收获 · 后续资源 · 联系方式

课内学习 · 概览

目标:围绕课程分类、绩点计算与资源工具,构建高效学习闭环。

  • Section 1|课程分类 基础课、核心课、选修课的侧重点与学习节奏。
  • Section 2|绩点计算 明确 GPA 公式、等级转换与规划思路。
  • Section 3|资源与工具 校内资源、线上平台与协作方式的组合拳。

Section 1 · 课程分类

理清课程谱系,区分基础、核心与选修的不同发力点。

数学基础

  • 数学分析:处理极限、微积分与收敛性的底层语法。
  • 线性代数:向量空间视角下的矩阵计算与变换。
  • 离散数学:图论、逻辑与组合为算法打底。
  • 概率论与数理统计:支撑机器学习与排队论分析。
  • 数据结构:算法复杂度与抽象数据类型的第一战场。

专业基础

  • 数字逻辑电路 · 计算机组成与实践 · 计算机系统结构。
  • 操作系统 · 嵌入式系统原理与实践,连接软硬件边界。
  • 计算机网络 · 编译原理,支撑分布式与语言体系。
  • 数据库系统原理与实践 · 人工智能,面向数据与推理。

专业选修

  • AI 与数据智能方向:深度学习系统、AIGC 工程。
  • 系统与安全方向:云原生、操作系统专题、网络攻防。
  • 产品与交叉方向:人机交互、产品创新、跨学科联合实践。
  • 原则:围绕长期目标匹配难度梯度,兼顾兴趣与配套资源。

Section 2 · 绩点计算

从平均绩点公式到等级映射,搭建可量化的成绩分析体系。

平均绩点公式

平均绩点基于所有课程绩点与学分的加权平均:

其中 gi 表示第 i 门课程的绩点,ci 表示对应学分。

百分制 → 等级制转换

CREATE OR REPLACE VIEW vw_score_grade AS
SELECT
    student_id,
    score,
    ROUND(PERCENT_RANK() OVER (ORDER BY score DESC) * 100, 2) AS M,
    CASE
        WHEN is_pass = 0 AND is_makeup_pass = 1 THEN 'D'
        WHEN is_pass = 0 AND is_makeup_pass = 0 THEN 'F'
        WHEN PERCENT_RANK() OVER (ORDER BY score DESC) <= 0.15 THEN 'A'
        WHEN PERCENT_RANK() OVER (ORDER BY score DESC) <= 0.30 THEN 'A−'
        WHEN PERCENT_RANK() OVER (ORDER BY score DESC) <= 0.45 THEN 'B⁺'
        WHEN PERCENT_RANK() OVER (ORDER BY score DESC) <= 0.60 THEN 'B'
        WHEN PERCENT_RANK() OVER (ORDER BY score DESC) <= 0.80 THEN 'B−'
        WHEN PERCENT_RANK() OVER (ORDER BY score DESC) <= 0.90 THEN 'C⁺'
        ELSE 'C'
    END AS grade_level
FROM score_table;

基于班级百分位数自动划分等级(PostgreSQL)。

等级成绩 → 绩点映射

CREATE OR REPLACE VIEW vw_score_grade_point AS
WITH grade_min AS (
    SELECT grade_level, MIN(score) AS min_score
    FROM vw_score_grade
    GROUP BY grade_level
)
SELECT
    g.student_id,
    g.score,
    g.M,
    g.grade_level,
    ROUND(
        CASE
            WHEN g.grade_level = 'A⁺' THEN 4.3
            WHEN g.grade_level = 'A'  THEN 4.0
            WHEN g.grade_level = 'A−' THEN 3.7
                + 0.3 * (g.score - gmAminus.min_score) / (gmA.min_score - gmAminus.min_score)
            WHEN g.grade_level = 'B⁺' THEN 3.3
                + 0.4 * (g.score - gmBplus.min_score) / (gmAminus.min_score - gmBplus.min_score)
            WHEN g.grade_level = 'B' THEN 3.0
                + 0.3 * (g.score - gmB.min_score) / (gmBplus.min_score - gmB.min_score)
            WHEN g.grade_level = 'B−' THEN 2.5
                + 0.5 * (g.score - gmBminus.min_score) / (gmB.min_score - gmBminus.min_score)
            WHEN g.grade_level = 'C⁺' THEN 2.0
                + 0.5 * (g.score - gmCplus.min_score) / (gmBminus.min_score - gmCplus.min_score)
            WHEN g.grade_level = 'C' THEN 1.5
                + 0.5 * (g.score - gmC.min_score) / (gmCplus.min_score - gmC.min_score)
            WHEN g.grade_level = 'D' THEN 1.0
            WHEN g.grade_level = 'F' THEN 0.0
        END,
    1) AS grade_point
FROM vw_score_grade g
LEFT JOIN grade_min gmA       ON gmA.grade_level = 'A'
LEFT JOIN grade_min gmAminus  ON gmAminus.grade_level = 'A−'
LEFT JOIN grade_min gmBplus   ON gmBplus.grade_level = 'B⁺'
LEFT JOIN grade_min gmB       ON gmB.grade_level = 'B'
LEFT JOIN grade_min gmBminus  ON gmBminus.grade_level = 'B−'
LEFT JOIN grade_min gmCplus   ON gmCplus.grade_level = 'C⁺'
LEFT JOIN grade_min gmC       ON gmC.grade_level = 'C';

利用各等级的最低分作为基点,使用线性插值细化绩点梯度。

绩点规划策略

  • 木桶效应:短板课程要不要倾斜更多复习资源?
  • 时间互斥:目标课程在时间上互斥或选课成功率不高时,怎样排列优先级?
  • 擅长 vs 想学:兴趣课程与优势课程错位时如何取舍?
  • 策略与运气:未来政策难以预测时,如何配置当下策略?
  • 过度内卷:高绩点目标与学习的初衷出现冲突时,该如何面对?

Section 3 · 资源与工具

聚合校内资源与数字工具,打造可持续的学习支撑体系。

校内资源

教材、实验指导书、助教答疑与办公时间。

线上平台

B站大学、GitHub、OJ 刷题站。

协作工具

Markdown 笔记、Chat 老师、Git 代码管理、多人小团体。

操作系统

推荐大家尽早接触 Arch Linux 操作系统。

Arch Linux fastfetch 截图占位

I use Arch btw.

ACM 竞赛 · 概览

目标:串联竞赛定位、俱乐部生态与训练规划,帮队友快速进入状态。

  • Section 1|竞赛简介 理解 ICPC / CCPC 赛制、评分与协作要求。
  • Section 2|俱乐部生态 训练文化、导师制度与知识沉淀方式。
  • Section 3|训练规划 语言、算法基础到进阶专题的递进节奏。

Section 1 · 竞赛简介

走进 ICPC / CCPC 赛制,明确“三人一机”的协作要求。

竞赛简介

  • 核心赛事:ICPC、CCPC 等团队程序设计竞赛,重视算法与工程实现。
  • 三人一机:队员轮流上机写代码,强调协同配合与题目分工。
  • 赛制速览:5 小时内多题并行,惩罚制,关注正确率与提交策略。
  • 能力收获:复杂问题建模、编码速度、压力管理与团队协作。

三人一机也可能是孤军奋战

ACM 训练群聊天截图占位

某次比赛中教练对“摸鱼”队员的调侃。

Section 2 · 俱乐部生态

了解俱乐部结构、导师制度与知识共享氛围。

ACM 俱乐部简介

  • 组织结构:核心队员 + 训练小组 + 新人营,形成学习共同体。
  • 导师制度:互为导师共同学习,教练定期检验训练成果。
  • 社群文化:鼓励自建题单、线下复盘与实战交流,保持高频反馈。

LLL 实验室

Deep Learning · Reinforcement Learning · NaiLong Learning

既着眼于传统算法竞赛,也向前沿科研靠拢。

LLL 实验室趣味图占位

左手抓竞赛,右手抓科研。

Section 3 · 训练规划

制定从入门到赛前冲刺的节奏、复盘与协作策略。

训练规划

语言基础

熟悉竞赛常用语言的语法与 IO 技巧。

算法基础

扎实掌握数据结构、复杂度与常用算法。

算法进阶

面向比赛的专题训练与代码复盘。

语言基础

熟练掌握 C/C++ 基础语法,熟悉 STL 容器的使用。

算法基础

  • 基础套路:枚举、模拟、贪心、分治、递归。
  • 搜索与结构:DFS、BFS、二分、倍增、栈/队列/链表/哈希结构。
  • 排序全家桶:冒泡、选择、插入、快速、归并、堆、基数。
  • 图论入门:树/图存储、最短路、最小生成树、拓扑排序。
  • 动态规划:背包、最长上升子序列、最大子段和、区间 DP 入门。
  • 字符串基础:朴素匹配、字符串哈希、回文判断。
  • 数论基础:欧几里得、快速幂、GCD/LCM、质数筛(埃氏/线性)。
  • 组合与复杂度:排列组合、模运算、时间空间复杂度分析。

算法进阶

  • 数据结构升级:线段树、树状数组、RMQ、可持久化结构、分块、莫队。
  • 字符串体系:Trie、AC 自动机、KMP、Z 函数、Manacher、后缀数组、后缀自动机。
  • 图论与网络流:Tarjan、Kosaraju、Dinic/ISAP/最小费用流、匈牙利、KM。
  • 树形专题:树链剖分、LCA、状态压缩 DP、树形 DP、树上启发式。
  • 动态规划优化:区间/数位 DP、斜率优化、单调队列、决策单调性、CDQ 分治。
  • 数学与数值:FFT/NTT、矩阵快速幂、中国剩余定理、扩展欧几里得、逆元、概率 DP。
  • 计算几何:凸包、旋转卡壳、扫描线、半平面交、最近点对。
  • 搜索与博弈:启发式搜索(A*/IDA*)、SG/Nim、模拟退火、随机化算法。

赛前动员 · 奶龙主题训练赛

11月13日晚 18:30 奶龙主题编程训练赛,面向新生。

奶龙主题编程训练赛宣传图

地点:机房 B129

总结 & 参考

  • 课内学习:构建课程体系、强化基础、让知识网络化。
  • ACM 竞赛:坚持训练、聚焦复盘、团队共同成长。

感谢观看 · QQ联系方式

联系方式二维码占位