Data Structures 2022
外观
时间与地点
- 时间:1-16周,周日 18:30起
- 地点:软件学院一楼5-104机房 (在一楼)
评分
ACM
- 期末考试 50%
- 机考 10%
- 小作业 10%
- 大作业1 – STLite 20%
- vector 4%
- priority queue 5%
- linked_hashmap 6%
- map 5%
- 大作业2 – 火车票管理系统 10%
工科
- 期末考试 40%
- 机考 15%
- 小作业 15%
- 大作业 - STLite 30%
- vector 5%
- list 5%
- priority_queue 7%(9%)
- linked_hashmap 8%
- map/bpt 12%(15%)
小作业
- 每两周发布一次,每次作业考察上机课的内容
- 成绩只取决于AC与否,不考虑时间(penalty),做完即满分
- OJ: https://acm.sjtu.edu.cn/OnlineJudge/
- 若无声明,本课程中所有大小作业不能用STL
- 可用的头文件:cstdio, cstring, cmath, iostream
大作业1 - STL
- https://github.com/ACMClassCourse-2021/STLite_ACM/
- https://github.com/ACMClassCourse-2021/STLite_Honor/
ACM班 | 发布 | ddl |
---|---|---|
vector | 第1周 | 第3周周六23:00 |
priority_queue | 第3周 | 第5周周六23:00 |
map | 第5周 | 第8周周六23:00 |
linked_hashmap | 第8周 | 第10周周六23:00 |
工科 | ||
oop练习 | 第1周 | 第3周周六23:00 |
vector+list | 第3周 | 第6周周六23:00 |
priority_queue | 第6周 | 第9周周六23:00 |
linked_hashmap | 第9周 | 第11周周六23:00 |
map与bpt二选一 | 第11周 | 第16周周六23:00 |
- 在 OJ 上通过测试数据可获得 80% 的分数,code review 占 20% 的分数。
- sjtu::priority_queue要求以最高O(log n)的时间复杂度实现合并操作。
- sjtu::map的实现B班要求平衡化(可从AVL树、红黑树、AA树中选择),A班要求使用红黑树完成。
- sjtu::linked_hashmap要求以均摊O(1)的复杂度实现插入、查找和删除,并支持按照插入顺序进行迭代器遍历。
- 对于工科的第三个STL大作业:
- 在 OJ 上通过 map (easy),可以获得 10 分;
- 在 OJ 上通过 map (hard),可以获得 12 分;
- 在 OJ 上视 B+ Tree 的通过情况,最高获得 15 分。
大作业2 - 火车票管理系统
- https://github.com/ACMClassCourse-2021/TicketSystem
- 发布: 第10周
- ddl: 第18周周日23:00
- 火车票管理系统为组队作业,共16组+1人,每组由一名A班同学与一名B班同学组成。分组方式为自行组队。
- 本次作业要求实现一个类似于 12306 的火车票订票系统,该系统向用户提供购票业务相关功能,包括车票查询、购票、订单操作等,以及向管理员提供后台管理功能(包括一个特殊的回滚数据库功能)。系统需将用户数据、购票数据、车次数据进行本地存储,并对其进行高效操作。
- 基础分 - 85%
- 性能 - 75%
- 正确性测试 - 35%
- 压力测试 - 30%
- 回滚测试 - 10%
- 文档 - 10%
- 性能 - 75%
- bonus - 15%
- 后端: 缓存/空间回收/命令行交互拓展/并发/增量备份
- 前端: 提供一个用户友好的图形操作页面,推荐实现跨平台的前端,如网页,Qt 等。
机考
- 共七次机考,在第3周开始的奇数周
- 第0次机考不计入成绩
- 共6题,考试时间18:30~20:30。工科做123题,B班做234题,A班做456题。
时间表
第1周
- 助教介绍,课程安排/作业安排介绍
第2周
- A班
- 树链剖分
- 主席树
- B班
- KMP
- ST表
第3周
- 第零次机考(不计入成绩)
https://acm.sjtu.edu.cn/OnlineJudge/contest?contest_id=268
第4周
- A班
- dp优化
- B班
- 单调栈
- 单调队列
- 用栈模拟递归
第5周
- 第一次机考
https://acm.sjtu.edu.cn/OnlineJudge/contest?contest_id=284
第6周
- A班
- 网络流
- B班
- lca
- 字典树
第7周
- 第二次机考
https://acm.sjtu.edu.cn/OnlineJudge/contest?contest_id=289
第8周
- A班
- 点分治
- 虚树
- B班
- 线段树
- 树状数组
第9周
- 第三次机考
https://acm.sjtu.edu.cn/OnlineJudge/contest?contest_id=305
第10周
- A班
- LCT
- B班
- 哈希
- 并查集
第11周
- 第四次机考
https://acm.sjtu.edu.cn/OnlineJudge/contest?contest_id=317
第12周
- A&B班
- 图算法选讲
第13周
- 第五次机考
https://acm.sjtu.edu.cn/OnlineJudge/contest?contest_id=329
第14周
- A班
- AC自动机
- B班
- 基础dp
第15周
- 第六次机考
https://acm.sjtu.edu.cn/OnlineJudge/contest?contest_id=341
第16周
- 期末笔试复习
Contact
ACM班助教
Name | |
---|---|
夏天 | xia_tian@sjtu.edu.cn |
倪文韬 | wennitao@sjtu.edu.cn |
吴叶鑫 | wuyexin_libro_i131@sjtu.edu.cn |
洪熠佳 | hyj542682306@sjtu.edu.cn |
韦中敬 | wzj2001@sjtu.edu.cn |
林杨楠 | fourest_lyn@sjtu.edu.cn |
潘开森 | pks0813@sjtu.edu.cn |
何夏麟 | hexialin1129@sjtu.edu.cn |
王硕 | Shuo_Wang@sjtu.edu.cn |
工科助教
Name | |
---|---|
刘泓轶 | liu.hong.yi@sjtu.edu.cn |
廖伟鑫 | liaoweixin@sjtu.edu.cn |
郭锦沛 | mike0728@sjtu.edu.cn |