ABC440
前言
感觉手速场,实力是有 ABCDEF 的,但是被 E 卡了一万年。
| Rank | Perf | New Rating | Diff |
|---|---|---|---|
| \(\text{Rk.}947\) | \({\color[RGB]{0,0,255} 1622}\) | \({\color[RGB]{0,255,255} 1265}\) | \(+52\) |
补题
C.Striped Horse
考虑 \(x = 0\) 时,显然答案就是下标模数为 \(0\sim W - 1\) 的 \(C_i\) 之和。
那么普通情况下 \(x\) 就是一个偏移量,所以我们直接扫一遍用前缀和求静态区间和即可。
时间复杂度 \(O(n+W)\)。
D.Forbidden List 2
考虑二分答案,二分一个 \(x\) 看看是第几大从而缩小区间。
判断过程可以再套一个二分,细节有点多。
时间复杂度 \(O(Q \log V \log n)\)。
E.Cookies
这种东西都是套路:堆 + 扩展次劣层。
我们对于一个元素,存它的美味度和、每种饼干类型用的数量 \(cnt\)。
然后每次扩展对于一个 \(cnt_x > 0\) 且 \(x<n\) 的饼干 \(x\),尝试用一个 \(x+1\) 替代 \(x\),接着放进堆里。
时间复杂度 \(O(nX \log nX)\),带点常数。
F.Egoism
你先考虑一个弱化版,即没有修改直接问你序列得到的最大值,那么有一个简单贪心策略就是尽可能让大的 \(a_i\) 得到乘二系数。
假设整洁度为 \(1\),\(2\) 的马集合为 \(S_1\),\(S_2\)。
那么答案就是 \(\sum W\) 加上前 \(k = |S_2|\) 大的 \(W\) 之和,记为 \(sum\)。
不过注意有约束条件,如果我们前 \(k\) 大的全在 \(S_2\) 里呢?此时显然不能满足上述贪心。
现在分三种情况:
- \(S_1\) 为空:答案等于 \(sum - \min(S_2)\)。
- \(S_2\) 为空:答案等于 \(sum\)。
- \(S_1\),\(S_2\) 均不为空,如果前 \(k\) 大全在 \(S_2\),那么答案等于 \(sum - \min(S_2) + \max(S_1)\),否则就是 \(sum\)。
实际上思路挺顺畅的,体感不到 1700。
然后这个东西你用 multiset 维护集合,随便上个能求第 \(k\) 大的数据结构(权值线段树、平衡树)动态维护是不是就做完了?
时间复杂度 \(O((Q+n) \log (V+n))\)。
反思
码力较弱,还好最后切掉了 E。
思维比较混乱,虽然做题时旁边一直有干扰,但还是自己脑子比较短路。

浙公网安备 33010602011771号