AT4720 [ABC123D] Cake 123

题意

给定三个序列,长度分别为 x,y,zx, y, z,你需要在三个序列里每个序列选一个数求和,有 xyzx \cdot y \cdot z 种和,求从大到小前 kk 个和。

解法

最暴力的做法是枚举每一种和,然后排序求前 kk 个,复杂度 O(xyzlog(xyz))O(xyz \log (xyz))

注意到 1x,y,z1031 \leq x, y, z \leq 10^3,考虑低于三次方的做法。

可以考虑先枚举前两个序列的所有和,共 xyxy 个,接下来排序后取前 kk 个和剩下的序列求和。

这个复杂度看起来也是平方的,显然当 k=xyk=xy 时,枚举的和仍然是 xyzxyz 个。

但是注意 kmin{3000,xyz}k \leq \min\{3000, xyz\},所以 kk 的上限为 30003000。可以接受。

复杂度为 O(xylog(xy))O(xy \log (xy)) 左右,可以通过。

posted @   HappyBobb  阅读(7)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示