2021 ECNA 区域赛总结与题解

比赛题解

差不多最后一年了,明年队友估计就都毕业了,看看能不能找到其他人吧,或者 solo 也行?

总结

今年由于疫情依然不能去温莎线下比赛,但相比去年三人三机今天变成了更像线下的三人一机,不过是在各自学校比赛,但令人不能理解是的居然一点监控措施都没有,全凭自己自觉和教练监督。。。。可以理解为摆烂吧😂。我们队算是做到了遵循规则,除了多接了一个显示器用来看代码(自己电脑没法连机房的打印机),以及我还是用的自己的键盘(用 40% 配列太久了改不回来了)。

排名有点出乎意料,考虑到队友忙于实习从不训练、我上了大三之后课程难度增加,只能靠每周 cf 维持一点做题量,这个排名已经很满意了,毕竟如果按 NAC 晋级规则按学校排名是第 6,校排名要是第 5 的话总排名要第 6,完全想 peach😂。

整场比赛还是比较流畅的,基本没有卡太长时间,A 题作为比较简单的题卡了有点久,最后还是靠猜结论过的,F 计算几何某队友到最后也没搞出来,不过没占用太多正常时间。时间再稍微多一点也许能搞搞 I 或者 K,不过到最后也比有点累了,昨晚也只睡了 5 个半小时。

题目

题目整体难度适中?比去年难一点,(读了的题)以思维题为主。除了 J 题摆烂出了最大子矩形原题,题目质量还可以?

A

一开始 wa 是因为忘了考虑相加的转移。考虑加的话要遍历一遍整个 dp 数组,时间复杂度会变成O(n2)O(n^2),但其实也能过因为时间给了 15s。。。(我 tm 写博客的时候才发现)。但貌似只要遍历前面一些数就行了,因为数大的时候乘肯定比加划算。

B

赛时无脑敲了个 lca,但其实稍微再想想就有更简单的做法:dfs 时维护到根节点的距离以及最短的两条到叶子的路径的举例即可。

G

签到题,枚举所有前缀以及交换顺序即可

J

经典最大子矩阵,单调栈搞搞即可。其实我赛时已经基本忘了怎么做了,只记得是是单调栈,想了半天才想出来正解,这下应该以后忘不了了 233

L

枚举四个角然后排序分层搞一搞,队友写的

M

最短路考虑用 bfs,把所有字符串放入一个 trie 就可以很容易知道哪些方向可以走了,所以状态就是[x][y][trie 中的节点的位置][上一步的方向]。除了状态复杂点其他就是正常 bfs 的套路,注意如果当前在单词结尾的位置,下一步即可以回到 trie 的根,又可以继续顺着 trie 走。