AT4720 [ABC123D] Cake 123
题意
给定三个序列,长度分别为 ,你需要在三个序列里每个序列选一个数求和,有 种和,求从大到小前 个和。
解法
最暴力的做法是枚举每一种和,然后排序求前 个,复杂度 。
注意到 ,考虑低于三次方的做法。
可以考虑先枚举前两个序列的所有和,共 个,接下来排序后取前 个和剩下的序列求和。
这个复杂度看起来也是平方的,显然当 时,枚举的和仍然是 个。
但是注意 ,所以 的上限为 。可以接受。
复杂度为 左右,可以通过。
给定三个序列,长度分别为 ,你需要在三个序列里每个序列选一个数求和,有 种和,求从大到小前 个和。
最暴力的做法是枚举每一种和,然后排序求前 个,复杂度 。
注意到 ,考虑低于三次方的做法。
可以考虑先枚举前两个序列的所有和,共 个,接下来排序后取前 个和剩下的序列求和。
这个复杂度看起来也是平方的,显然当 时,枚举的和仍然是 个。
但是注意 ,所以 的上限为 。可以接受。
复杂度为 左右,可以通过。