santisify Site

Back

2025省赛预选赛补题Blur image

(cf补题链接)[https://codeforces.com/gym/606649]

H#

题目描述#

给定三个数组AA, BB, CC,长度分别为 nn, mm, pp,每个数组取一个数求和,输出前kk个最大值。

数据范围: ln,m,p1000l \le n,m,p \le 1000, 1kmin(3000,n×m×p)1 \le k \le min(3000, n \times m \times p) , 0Ai,Bi,Ci100000000000 \le A_{i}, B_{i}, C_{i} \le  10000000000

解题思路#

首先想到的最简单的思路是暴力求解,这样的时间复杂度将会是1e9log21e91e^{9} \log_{2} ^{1e^{9}} ,如何优化呢?
我们可以将其中两个数组合并,这里我们选择将A,BA, B 两个数组合并,然后进行排序,这里复杂度为1e6log21e61e^{6}\log_{2}^{1e^{6}}, 我么选择合并后的前kk个最大值和数组CC合并,这里的复杂度为3e3×1e33e^{3} \times 1e^{3}, 可以用堆维护kk个数。

参考代码#

E#

题目描述#

给定一个长度为nn的数组AA, 有qq次询问,每次给出l,r,start,endl, r, start, end, 对于每次询问,我们要输出AA中在区间段[l,r][l,r] 中,startAiendstart \le A_{i} \le end的数的个数。

数据范围:1N,q105,1012Ai10121 \le N, q \le 10^{5}, -10^{12} \le A_{i} \le 10^{12}

解题思路#

赛时,我想的是对区间内的数排序,然后二分查找边界,计算数量,奈何TLE,tql,显然是排序超时了。
正解是树状数组或者线段树

参考代码#

2025省赛预选赛补题
https://santisify.top/blog/old/2025sichuan-icpc-pre
Author santisify
Published at April 27, 2025
Comment seems to stuck. Try to refresh?✨