Educational Codeforces Round 125 VP 记录

这场 vp 的太烂了/tuu,赛时 4 发罚时,还剩两分钟发现 D 的式子写错了

A. Integer Moves

能一步到位就一步到位,不行就两步。

B. XY Sequence

贪心,能加则加,不能加则减。

C. Bracket Sequence Deletion

满足两个要求之一,合法的括号串可以用栈来模拟一下括号匹配,回文串直接上双哈希。

两个操作同时进行,有一个满足就退出删掉这一段。

然后暴力枚举前缀长度判断该不该删即可,复杂度其实是 \(\mathcal O(n)\) 的。

D. For Gamers. By Gamers.

选第 \(i\) 类随从的秒伤是 \(\lfloor \frac{C}{c_i}\rfloor \times d_i\),然后击败敌人所用时间是 \(\frac{H_j}{\lfloor \frac{C}{c_i}\rfloor \times d_i}\)

敌人秒伤是 \(D_j\),击败我们的时间是 \(\frac{h_i}{D_j}\)

如果我们想胜利,需要

\[\frac{h_i}{D_j} > \frac{H_j}{\lfloor \frac{C}{c_i}\rfloor \times d_i} \]

化简一下得到

\[\lfloor \frac{C}{c_i} \rfloor \times d_i \times h_i > H_j \times D_j \]

发现 \(i,j\) 分开了,考虑我们应该合理的处理一下左半部分,然后对于每个 \(j\) 可以单独查。

首先一定有 \(c_i | C\) ,多出来的没意义。

然后你发现数据范围是 \(1 \le C \le 10^6\)

那就可以把 \(c_i\) 投射到值域上只留下一个最大的 \(d_i \times h_i\)

然后枚举值域和它的倍数进行处理,这个复杂度是 \(\mathcal O(n \ln n)\) 的。

对于每个询问可以直接 upper_bound 一下。

总时间复杂度为 \(\mathcal O(n \ln n + Q \log n)\)

posted @ 2022-03-24 08:44  Suzt_ilymtics  阅读(30)  评论(0编辑  收藏  举报