OO 第三单元总结:JML?离散!照抄完事。

第九次作业

设计策略

照抄规格。

测试策略

并没有写测试。

容器选择和使用策略

根据访问形式选择,哪个数据结构合适用哪个。一般以 HashMap 为主,由于 id 是唯一的。

性能问题

这次作业本身就没啥性能问题。

作业架构设计

照抄规格,把 T[] 替换成 HashMap<Integer, T>

写的时候一直在抄规格,脑子根本没在转;然而异常部分没有规格可抄,于是就错在这里了。

第十次作业

设计策略

照抄规格。

测试策略

没有测试。

容器选择和使用策略

无脑 Hashmap 就完了。因为提供的 id 都是 unique 的。

性能问题

这回由于照抄规格,没有写维护式算法,所以强测 T 了。

作业架构设计

全部照抄规格。

bug 修复的时候把 queryValueSum 的实现形式改成了更新式。

第十一次作业

设计策略

其实 JML 就是离散嘛,直接照抄规格不好吗?

测试策略

只要符合 JML 的实现就是对的实现,所以没写测试。

容器选择和使用策略

这回用了 HashSet 和 TreeMap,主要是服务于特定的查询需求。

查询需要序 → 考虑 Tree***

不需要序 → 考虑 Hash***

性能问题

sim 需要求最短路,而 ar 可以更新最短路;

所以本着能不优化就不优化的思想我直接选择每次重新求最短路,复杂度是 \(O(q(n+e)\log n)\),由于常数有点大 GG 了。一些 lazytag 也没有去实现。(因为人 lazy 了)

作业架构设计

依旧照抄规格。本质上 JML 就是离散(1)嘛。

构建和维护图结构本质上是靠 T[]Collection<T, ...> 的逻辑映射在支撑。

还是那句话,需要啥访问使用啥结构。结构都确定了,其实所剩的也就只是调调接口罢了。从离散式子到容器接口的翻译工作,想必也没有什么好说的了罢。

posted @ 2021-06-01 12:45  葡萄味柠檬茶  阅读(195)  评论(0编辑  收藏  举报