4/17考试总结
时间安排
得知是 4 题 + IOI 赛制,感觉很厉害
7:50--8:10 读题,T1,T2 应该都是签到题,主要要看后两道。T3 应该是什么动态 dp 或者矩乘树剖什么的,T4 估计是个奇怪图论。
8:10--8:20 T1,前缀和一下就行了。
8:20--9:00 T2,无脑背包然后套个组合数。然后死活调不过去,最后发现模数是 1e9+7 而不是 998244353 ,而且枚举值域的上界搞错了直接 RE 了。服了。改改就过了。
9:00--10:30 T4,有暴力。考虑能不能每次只处理新增的贡献而不是整个重来一遍。猜了个结论,改改改发现是假的。没什么别的思路 ,弃掉 T4 看 T3 。
10:30--12:00 T3,先把暴力的 dp 写了。容易想到矩乘,但是显然复杂度不太对过不掉,想着能不能用别的什么东西比如倍增什么的直接求答案,发现只会做不带修版本。没办法,写矩乘的部分分吧。然后有 50 分。尝试着卡常卡 70 分,失败了。显然朴素的矩乘没有出路了,不知道怎么优化。
12:00--13:00 吃饭。回来看 T3 ,没有进展。
回顾反思
T2:
耽误时间了。
做取模题一定要搞清楚模数。
涉及到枚举值域的时候要搞清楚自己需要的上界到底是多少,不一定是整个值域的上界。
T3:
有朴素的矩乘,状态数 v ,那么矩阵大小就是 v*v 的,拼了命的卡常也只能拿到 50~70 分左右。
正解分析性质后融入的贪心的思想。
发现对于一种方案可以花费至多 1 的代价使得最大可能的能量值。
那么我们实际上不需要知道具体 v->v 这样 v^2 的对应的方案,假设初始状态为 v ,只需要知道贪心花费最小的代价能够达到的最大能量 fi。那么我们要么使用贪心的方案得到 fi ,要么花费 1 的代价达到最大可能能量。这样显然是不劣且正确的。
于是只要设 v 规模的状态维护 fi 。矩乘的复杂度就降了 v^2 左右。
比赛的时候没有去想贪心。
当朴素的完备的 dp 复杂度受限时,考虑是否所有的转移信息都是优的,通过分析性质和贪心降维。
T4:
题解说这道题是科技题。
用到的 Kosaraju 算法 之前写过一遍,不过有点冷门几乎没用到过于是压根没印象。
题目实际上需要求强连通分量的大小。
tarjan 主要和边相关,
Kosaraju 算法主要和点是否被访问相关
这道题边数很大,但是点数比较小,于是用 Kosaraju 就行了。

浙公网安备 33010602011771号