AT_oupc2023_day1_n Bench
题目描述
有一张很长的长椅,上面一排放着 $L$ 个编号分别为 $1$ 到 $L$ 的坐垫。对于每一个 $i$($1\leq i\leq L-1$),坐垫 $i$ 与坐垫 $i+1$ 是相邻的。
现在有 $N$ 个小组依次前来坐在长椅上。第 $j$ 个小组有 $A_j$ 个人,该小组会选择一段连续的 $A_j$ 个坐垫(即对于某个 $p$,选择坐垫 $p,p+1,\dots,p+A_j-1$),并每个坐垫坐一个人。如果找不到一段连续的 $A_j$ 个坐垫且这段坐垫没有其他人坐,且每个人都能入座,这个小组就**入座失败**。一旦有一个小组入座失败,后面的小组都不会再来坐了。
在第 $1$ 个小组开始前,KowerKoint 君可以花钱调整各个小组人数,具体操作如下,可以任意次数进行(可以不进行):
- 支付 $B_j$ 元,将第 $j$ 个小组的人数减少 $1$(仅当该组人数 $\geq 2$ 时才可进行)
- 支付 $C_j$ 元,将第 $j$ 个小组的人数增加 $1$
但在操作过程中以及操作后,所持金钱不能为负数。并且,$B_j$ 可以为负数,$-x$ 元意味着可以获得 $x$ 元。
请考虑,对于任意能让每组在选择座位时,最终**必然能够入座**的人数之和最大值为多少,也就是追求最大的 $y$,使得无论每组如何选择座位,至少 $y$ 个人必然能入座。现在给出 $Q$ 个操作前所持金钱 $M_1,M_2,\dots,M_Q$,对于每个 $k$($1\leq k\leq Q$),问当持有 $M_k$ 元时,KowerKoint 君能通过操作使得总入座人数最大是多少。
输入格式
输入从标准输入获得,格式如下所示。
> $N$ $L$
> $A_1$ $B_1$ $C_1$
> $A_2$ $B_2$ $C_2$
> $\vdots$
> $A_N$ $B_N$ $C_N$
> $Q$
> $M_1$
> $M_2$
> $\vdots$
> $M_Q$
输出格式
请输出 $Q$ 行,第 $k$ 行输出当初始持有 $M_k$ 元时,KowerKoint 君经过操作后,无论如何坐人,**一定能够坐下的最大人数**。
说明/提示
## 子任务
1. (1分)$B_j=1,C_j=1,Q=1,M_k=0$
2. (99分)无额外限制
## 样例解释 1
- 第 1 个查询,KowerKoint 君有 0 元。如果不操作,只有第 1 个小组的 2 个人一定能坐下。第 3 个小组人数可以任意增加,但这无法让一定能坐下的人数增加。
- 第 2 个查询,KowerKoint 君有 1 元。花 1 元将第 2 个小组人数减少 1,前 2 个小组的 2+3=5 人都能一定入座,这是最大值。
- 第 3 个查询,KowerKoint 君有 5 元。花 1 元将第 2 个小组人数减少 1,花 3 元将第 3 个小组人数减少 1,则 2+3+1=6 人全部一定能入座,这是最大。
- 第 4 个查询,KowerKoint 君有 10 元。花 $2\times5=10$ 元将第 1 个小组人数增加 5,则第 1 个小组的 7 个人都能一定入座,这是最大。
该测试用例不满足子任务 1 的限制。
## 样例解释 2
该测试用例满足子任务 1 的限制。
## 样例解释 3
该测试用例不满足子任务 1 的限制。
# 数据范围与限制
- $1 \leq N \leq L \leq 3000$
- $1 \leq A_j \leq L$
- $-10^9 \leq B_j \leq 10^9$
- $0 \leq C_j \leq 10^9$
- $1 \leq B_j+C_j$
- $1 \leq Q \leq 200\,000$
- $0 \leq M_k \leq 10^{15}$
- 所有输入均为整数。
由 ChatGPT 5 翻译