B4159 [BCSP-X 2024 12 月小学高年级组] 打怪升级

题目描述

Alice 在玩一个游戏,游戏共有 $n$ 个关卡,你需要操作 $1$ 个主角过关,主角有 $2$ 个属性: 1. 血量 2. 等级 每关的 Boss 会对主角造成伤害(血量减小),第 $i$ 关的 Boss 对等级为 $j$ 的主角造成的伤害值为 $b[i][j]$。 每关打完 Boss 后,在进入下一关前会得到一本经验书,你有 $2$ 个选择: 1. 回血:第 $i$ 关的经验书可以使血量增加 $a[i]$。 2. 改变等级:若假设主角当前等级为 now,使用经验书可以将等级变为 $[1, now + 1]$ 中的任意值。 你需要在 $2$ 个选择中择一执行。 已知主角的初始血量为 $m$,初始等级为 $1$,游戏过程中任意时刻血量必须 $>0$。 现在请问,在通过第 $k$ 个关卡之后(可以使用第 $k$ 关的经验书),主角能达到的最大等级是多少?如果无法通过第 $k$ 关,答案为 0。 请你输出 $k = 1 \sim n$ 的所有答案,注意这 $n$ 个询问是独立的。 例如 $n = 3, m = 2, a = [2, 1, 1]$ $$b[1][1] = 1$$ $$b[2][1] = 2, b[2][2] = 3$$ $$b[3][1] = 3, b[3][2] = 3, b[3][3] = 3$$ - 当 $k = 1$ 时,第一关血量先减为 $2 - 1 = 1$,然后选择升为 2 级,答案为 $2$。 - 当 $k = 2$ 时,第一关血量先减为 $2 - 1 = 1$,然后选择加血 $1 + 2 = 3$;第二关血量减为 $3 - 2 = 1$,然后选择升为 $2$ 级,答案为 $2$。 - 当 $k = 3$ 时,无论如何选择都无法通过第 3 关,答案为 $0$。

输入格式

第一行 $2$ 个整数 $n, m$,代表关卡数量和初始血量。 第二行 $n$ 个整数 $a[1 \sim n]$ 代表每关经验书的加血量。 接下来 $n$ 行,第 $i$ 行包含 $i$ 个整数代表第 $i$ 关的 Boss 对等级为 $1 \sim i$ 的主角造成的伤害值。

输出格式

输出 $n$ 行,第 $i$ 行包含 $1$ 个整数代表通过第 $i$ 个关卡之后,主角能达到的最大等级。

说明/提示

### 样例 3-5 见附件。 ### 数据范围 对于所有数据,$1 \leq n \leq 1500, 0 \leq a[i], b[i][j] \leq 100, 1 \leq m \leq 1500$ 本题采用捆绑测试,你必须通过子任务中的所有数据点以及其依赖的子任务,才能获得子任务对应的分数。 | 子任务编号 | 分值 | $n$ | 子任务依赖 | |:----------:|:----:|:-------:|:------------:| | 1 | 39 | $\leq 10$ | | | 2 | 43 | $\leq 100$ | 1 | | 3 | 18 | $\leq 1500$ | 1,2 |