小编a_y*_*mer的帖子

如何在给出前两个数字的过程中找到大于x的第n个最小子数组和?

我有一个级数“ a”,其中给出了前两个数字(a1和a2),每个下一个数字都是子数组的最小总和,该子数组大于前一个数字。

例如,如果我有a1 = 2和a2 = 3,那么进展将是

2,3,5(= 2 + 3),8(= 3 + 5),10(= 2 + 3 + 5),13(= 5 + 8),16(= 3 + 5 + 8),18( = 2 + 3 + 5 + 8 = 8 + 10),23(= 5 + 8 + 10 = 10 + 13),26(= 3 + 5 + 8 + 10),28(= 2 + 3 + 5 + 8 +10),29(= 13 + 16)...

我需要在此进程中找到第N个数字。(时间限制为0.7秒)

(a1小于a2,a2小于1000,N小于100000)

我尝试了优先级队列,设置,映射,https://www.geeksforgeeks.org/find-subarray-with-given-sum/和其他一些东西。

我虽然优先级队列可以工作,但是它超出了内存限制(256 MB),所以我几乎没有希望。

这是目前表现最好的。

int main(){
  int a1, a2, n; …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm data-structures

6
推荐指数
1
解决办法
180
查看次数

标签 统计

algorithm ×1

c++ ×1

data-structures ×1