题目 3004

区间最大和

查看题解 ↗GitHub ↗如何评测
题号
3004
时间限制
1000 ms
内存限制
128 MB
标签
倍增前缀和

给定一个长度为 NN 的数列 AA,然后进行若干次询问。每次给定一个整数 TT,求出最大的 kk,满足

∑i=1kA[i]⩽T\sum_{i=1}^{k} A[i] \leqslant T

你的算法必须是在线的(必须即时回答每一个询问,不能等待收到所有询问后再统一处理)。数据保证 0⩽T⩽∑i=1NA[i]0 \leqslant T \leqslant \sum_{i=1}^{N} A[i]。

约定:kk 可以等于 00,此时认为 ∑i=10A[i]=0\sum_{i=1}^{0} A[i] = 0。

输入格式

第一行包含两个整数 N,QN,Q,分别表示数列的长度和询问次数。

第二行包含 NN 个正整数,表示数列 A1,A2,…,ANA_1, A_2, \dots, A_N。

接下来 QQ 行,每行一个整数 TT,表示一次询问。

输出格式

对于每次询问输出一行一个整数,表示最大的 kk。

数据范围

1⩽N⩽1051 \leqslant N \leqslant 10^5,
1⩽Q⩽1051 \leqslant Q \leqslant 10^5,
1⩽A[i]⩽1091 \leqslant A[i] \leqslant 10^9,
0⩽T⩽∑i=1NA[i]0 \leqslant T \leqslant \sum_{i=1}^{N} A[i]

输入样例:

文本
5 4
1 2 3 4 5
0
6
8
15

输出样例:

文本
0
3
3
5

来源

  • 《算法竞赛进阶指南》0x06 倍增

数据下载

题目 3004 的公开数据

正在读取文件列表…

常用命令

题目 3004 的 ROJ 命令

以下命令默认使用全局安装的 ROJ Skill,请在终端中直接执行;如果修改过 AGENT_HOME,请将命令中的 ~/.agents 替换为对应目录。