2020 Summer #1

0x01 Devu and his Brother

考虑将 \(\{ a_n \}\) 升序排序,\(\{ b_n \}\) 降序排序,令 \(a_{n+1} = 10^9\)\(b_{n+1} = -10^9\)

然后考虑最小的 \(i \in [0, n]\),满足 \(a_{i+1} \geqslant b_{i+1}\)

易知调整后对所有 \(1 \leqslant j \leqslant i\)\(a_j = b_j = x\),其中 \(b_{i+1} \leqslant x \leqslant a_{i+1}\),此时花费的操作数最少,为 \(b_j - a_j\)


0x02 Skills

若最低技能等级被确定,则可贪心求出满级技能个数,反之亦然。

注意到单调性,故可二分确定。


0x03 Subway Innovation

贪心,保留的地铁站一定是连续的 \(k\) 个。

排序后扫一遍。


0x04 Edo and Magnets

每次拿掉的磁铁肯定是上下左右的极值之一。

\(O(4^k)\) 暴力 DFS\(O(k^4)\) 枚举每个方向拿掉多少个均可。


0x05 Mashmokh and Water Tanks

最优解中的点深度肯定是连续的。

所有点按深度升序排序,双指针扫。


0x06 Bear and Contribution

如果只有第二种操作,显然可以枚举 \(x\) + 双指针。

对于第一种操作,考虑 \(a_i \gets a_i + 5 - a_i \bmod 5\),即可类似地求解。

注意此时单调性仅存在于模 \(5\) 同余的 \(a_i\) 中,细节略有改变。


0x07 Gadgets for dollars and pounds

二分天数。


0x08 Castle Defense

二分答案。


0x09 GukiZ hates Boxes

二分时间。

每个人可以分开考虑。


0x0A Sweets for Everyone!

二分额外带多少颗糖。

如果当前在 H 且糖不够发,有两种贪心策略:

  1. 一直往下走到底,再回来一遍发完所有的糖。
  2. 往下走直到糖够发了直接回来。

0x0B Planning

如果有多架飞机在同一时刻起飞,必然让 \(c_i\) 最大的飞机在这一时刻起飞,其他飞机往后延迟。

每架飞机初始放在最早能起飞的位置,往后扫一遍。


0x0C Cartons of milk

肯定先喝保质期靠后的奶。

排序后倒着扫。


0x0D Social Network

双指针扫一遍每一个区间和第一个与它相交的区间,如果不同的编号不小于 \(m\) 个,就给当前区间编一个新号,否则和上一个区间用同一个编号。


0x0E Time to Raid Cowavans

\(b \leqslant \sqrt n\) 记忆化,\(b > \sqrt n\) 暴力跳,时空复杂度 \(O(n \sqrt n)\)

但此题卡空间,上面的做法会 MLE

此题没有修改操作,可以离线:对于 \(b \leqslant \sqrt n\) 的所有 \(b\),预处理出每一个剩余系的答案,将询问按 \(t\) 升序排序,双指针扫一遍。

空间复杂度降至 \(O(n)\)


0x0F Maximum Value

去重后按值域分块。


0x10 GukiZ and GukiZiana

分块处理询问,multiset 块内查值。

posted @ 2022-04-07 13:13  johnsmith0x3f  阅读(19)  评论(0)    收藏  举报