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, ...>
的逻辑映射在支撑。
还是那句话,需要啥访问使用啥结构。结构都确定了,其实所剩的也就只是调调接口罢了。从离散式子到容器接口的翻译工作,想必也没有什么好说的了罢。