QOJ.ac

QOJ

Limite de temps : 1.0 s Limite de mémoire : 1024 MB Points totaux : 100 Hackable ✓

#18166. 饥饿的猫

Statistiques

在成功阻止了年度全国猫咪日(NCD)期间猫咪的灭绝后,猫咪 Ket 现在收到了来自食人猫王国的饥饿投诉。因此,Ket 被委派去运送食物,以防止它们再次诉诸同类相食。

这个猫咪王国可以建模为一条从西向东延伸的漫长道路。道路的西端有一个食物银行。在食物银行的东侧有 $n$ 个猫咪房屋,编号从 $1$ 到 $n$。保证 $n$ 是偶数。第一座房屋位于食物银行以东 $d[1]$ 公里处。对于 $i \ge 2$,第 $i$ 座房屋位于第 $(i - 1)$ 座房屋以东 $d[i]$ 公里处。

Ket 将驾驶一辆运货卡车为这些房屋运送食物。卡车从食物银行出发,初始拥有 $x$ 单位的燃料。$1$ 单位燃料允许 Ket 驾驶卡车沿道路行驶 $1$ 公里。

第 $i$ 座房屋有 $f[i]$ 单位的燃料供卡车使用。卡车的燃料存储空间是无限的,只有在燃料耗尽时才会停止。卡车在离开后不需要返回食物银行。

猫咪王国道路模型示意图

此外,Ket 拥有一根魔法棒。挥动一次魔法棒,他可以交换第 $i$ 座和第 $(n - i + 1)$ 座猫咪房屋中存储的燃料量。这种交换只有在两座房屋中的燃料都尚未被使用过时才能进行。请帮助 Ket 找出他通过任意次数的交换所能到达的最远房屋的索引 $D$。同时,帮助 Ket 找出到达房屋 $D$ 所需的最少交换次数 $S$。

输入格式

你的程序必须从标准输入读取数据。

第一行包含两个空格分隔的整数 $n$ 和 $x$。

第二行包含 $n$ 个空格分隔的整数 $d[1], d[2], \dots, d[n]$。

第三行包含 $n$ 个空格分隔的整数 $f[1], f[2], \dots, f[n]$。

输出格式

你的程序必须输出到标准输出。

在单行上输出两个空格分隔的整数。第一个整数应为 $D$,即 Ket 能到达的最远房屋的索引,随后是 $S$,即到达房屋 $D$ 所需的最少交换次数。

子任务

对于所有测试用例,输入满足以下界限:

  • $2 \le n \le 500\,000$
  • $n$ 是偶数。
  • 对于所有 $1 \le i \le n$,有 $1 \le d[i] \le 10^9$
  • 对于所有 $1 \le i \le n$,有 $1 \le f[i] \le 10^9$
  • $d[1] \le x \le 10^9$

你的程序将在满足以下限制的输入实例上进行测试:

子任务 分数 附加限制
0 0 样例测试用例
1 7 $\ f[i] - f[n - i + 1]\ = k$($k$ 为某常数)
2 12 $n \le 40$
3 14 $f$ 是非递减的(对于所有 $1 \le i \le n - 1$,有 $f[i] \le f[i + 1]$)
4 19 $D \le \frac{n}{2}$
5 21 $n \le 5000$
6 27 无附加限制

注:数字 $x$ 的绝对值,记作 $|x|$,是等于数轴上 $0$ 与 $x$ 之间距离的非负数。例如, $|5| = 5$ 且 $|-5| = 5$。

样例

输入格式 1

6 1
1 1 3 1 1 6
1 1 1 4 3 2

输出格式 1

5 1

说明

这里有一个食物银行,其东侧有 $n = 6$ 座房屋。Ket 的卡车初始有 $x = 1$ 单位燃料,并移动到房屋 $1$。他在房屋 $1$ 加油,然后开往房屋 $2$。此时,Ket 最优的选择是使用魔法棒交换房屋 $2$ 和 $5$ 中的燃料量,这使他能够补充 $3$ 单位燃料并到达房屋 $3$。随后,他在前往接下来的两座房屋之前可以补充 $1$ 单位燃料,并在房屋 $4$ 和 $5$ 分别补充 $4$ 和 $1$ 单位(由于之前的交换)的燃料。

之后他将剩下 $4$ 单位燃料,这使他无法前往房屋 $6$,因为那需要 $6$ 单位燃料。由于 Ket 在到达房屋 $6$ 之前燃料耗尽,他只能到达房屋 $5$。此外,他必须使用魔法棒进行一次交换。因此,$D = 5$ 且 $S = 1$。

输入格式 2

6 5
3 8 3 1 4 1
2 7 1 6 2 7

输出格式 2

6 1

输入格式 3

6 2
2 24 25 40 5 11
4 12 14 16 20 30

输出格式 3

3 2

输入格式 4

6 10
3 6 3 7 8 6
4 3 1 7 1 6

输出格式 4

5 1

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.