
2. 记忆化与时间戳
cpp
int& ans = d[s][a];
if(vis[s][a] == kase) return ans;
vis[s][a] = kase;
因为是多组测试数据,每次 memset 整个 vis 数组太慢了。刘汝佳用了一个经典的 ICPC 技巧:kase 是当前测试用例的编号。如果 vis[s][a] == kase,说明这个状态在当前这组数据里算过了,直接返回。
int& ans = d[s][a] 是个引用,后面修改 ans 就是直接修改 d[s][a],省去重复写 d[s][a] 的麻烦。