7月7日模拟赛总结

here.

T1 简单题,略过。

T2 因为加了方向这个维度,所以考虑以方向为层级建分层图,然后边宽搜边染色,最后被染色的最终那一层的点就是可能的终点。需要注意的是,每个方向上必须至少走一步,因此在节点入队之前要先走一步。

T3 注意到最多 20 步就能达成要求(一直乘 2 即可),并且很容易发现先加后乘一定是最优的(尽可能加多一点,再乘的话加的那些也会跟着翻倍)。挖掘出了这两条性质,我们便可以枚举加了多少次,然后看还要乘多少次才能符合要求,这两部分加起来取个 \(\min\) 即可。注意加完以后要特判一下是否已经是 \(2^{20}\) 的倍数。

T4 可以发现从 \((1,1) \to (n,m)\) 最短的方式就是绕着外边走,\(n-m+3\) 步即可到达。我们必定会选这条路走,在这个前提下,最大的花费无疑是直接炸过去,花 \(n-m+3\) 的资金即可。也就是说,资金的上限就是 \(n-m+3\)。那么,我们同样可以枚举用多少钱买复用型装备,这样只用考虑炸弹的问题。将其抽象为一个图论模型,也就是遇到一个地块,若战斗力充足,就不需要炸弹(边权为 0);反之则需要炸弹(边权为 1),现在要求花费最小,那么求最短路即可,为了保证时间我们采用 0/1 bfs(和普通 bfs 的区别在于,维护了一个双端队列,边权为 0 的插到前端,边权为 1 的插入后端,从而保证单调性)即可。

成绩:100+20+5+0=125,rk3。

总结:多个维度建分层图;网格图抽象为图论模型;有两个约束,可以考虑寻找答案上限,然后通过枚举其中一个来求解另一个。

posted @ 2025-07-07 19:46  _KidA  阅读(6)  评论(0)    收藏  举报