#L5467. #5467. 「eJOI2025」反应
#5467. 「eJOI2025」反应
#5467. 「eJOI2025」反应
题目描述
题目译自 Reactions
Nicky 正在进行化学反应性的实验。他准备了 个实验,编号从 到 。现在他需要选择他的起始实验,然后他将进行所有编号大于或等于所选实验的实验。换句话说,如果他决定从编号为 的实验开始,他将按顺序进行实验 。
在开始实验之前,他有一个装有溶液的容器。溶液的温度为 摄氏度。在第 个实验()期间,他按顺序执行以下两个步骤:
- 将溶液的温度改变给定的整数度数(它可以任意增加或减少,或保持不变);
- 进行实验并检查是否发生反应。
已知对于第 个实验,温度会变化 度——如果 ,温度升高;如果 ,温度降低;如果 ,温度保持不变。此外,第 个实验中的反应仅在当前温度(变化后)大于或等于 时才会发生。请注意,无论反应是否发生,第一步的温度变化都会持续存在。
Nicky 希望发生尽可能多的反应,以便他能收集到尽可能多的数据。请通过计算这个数字来帮助他。
实现细节
您应该实现 reactions 函数:
int reactions(int N, std::vector<int> D, std::vector<long long> T)
- :计划的实验数量;
- :一个包含 个整数的向量,其中 表示第 个实验的温度变化;
- :一个包含 个整数的向量,其中 表示在第 个实验期间发生反应所需的溶液最低温度。
对于每个测试点,该函数将被调用一次。它必须返回在适当选择起始实验的情况下可能发生的最大反应次数。
样例 1
考虑以下调用:
reactions(5, {1, 1, -3, 1, 1}, {1, 3, 5, 1, 2})
如果 Nicky 选择从编号为 的实验开始,溶液的温度将变为 ,这满足了该反应发生的条件。在下一个实验中,温度升高到 ,反应再次发生。由于不可能发生超过 次反应,函数应返回 。
样例 2
考虑以下调用:
reactions(5, {1, -3, 0, 3, 2}, {0, -2, -1, 0, 3})
函数应返回 ,因为从编号为 的实验开始,Nicky 将在编号为 和 的实验中观察到反应。温度从 摄氏度开始,在每个实验期间的温度分别为:。
输入格式
第一行包含一个整数: 的值。
第二行包含 个整数:。
第三行包含 个整数:。
输出格式
第一行包含一个整数:该调用的返回值。
数据范围与提示
对于所有输入数据,满足:
详细子任务附加限制及分值如下表所示。
| 子任务 | 分值 | 子任务依赖 | 附加限制 |
|---|---|---|---|
| 0 | - | 样例。 | |
| 1 | 0 | ||
| 2 | 最多有 个编号 使得 。 | ||
| 3 | - | 对于每个 ,有 | |
| 4 | 0 | 答案最多为 。 | |
| 5 | 0 - 4 | - |