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\) 里呢?此时显然不能满足上述贪心。

现在分三种情况:

  1. \(S_1\) 为空:答案等于 \(sum - \min(S_2)\)
  2. \(S_2\) 为空:答案等于 \(sum\)
  3. \(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。

思维比较混乱,虽然做题时旁边一直有干扰,但还是自己脑子比较短路。

posted @ 2026-01-11 21:08  Statax  阅读(3)  评论(0)    收藏  举报