CF2089B2 Canteen (Hard Version)

题目描述

这是该问题的困难版本。两个版本的区别在于此版本中,对 $$$k$$$ 没有额外限制。只有当你解决了该问题的所有版本时才能进行 hack。 Ecrade 有两个由整数构成的序列 $$$a_0, a_1, \ldots, a_{n - 1}$$$ 和 $$$b_0, b_1, \ldots, b_{n - 1}$$$。保证 $$$a$$$ 中所有元素的总和不超过 $$$b$$$ 中所有元素的总和。 初始时,Ecrade 可以对序列 $$$a$$$ 进行恰好 $$$k$$$ 次修改。保证 $$$k$$$ 不超过 $$$a$$$ 的总和。每次修改操作如下: - 选择一个整数 $$$i$$$($$0 \le i < n$$)满足 $$$a_i > 0$$$,并执行 $$$a_i := a_i - 1$$$。 然后,Ecrade 将对 $$$a$$$ 和 $$$b$$$ 依次执行以下三个操作,这三个操作构成一轮操作: 1. 对每个 $$$0 \le i < n$$$:$$t := \min(a_i, b_i)$$,$$a_i := a_i - t$$,$$b_i := b_i - t$$; 2. 对每个 $$$0 \le i < n$$$:$$c_i := a_{(i - 1) \bmod n}$$; 3. 对每个 $$$0 \le i < n$$$:$$a_i := c_i$$。 Ecrade 想知道,在对 $$$a$$$ 进行恰好 $$$k$$$ 次修改后,使得 $$$a$$$ 中所有元素变为 $$$0$$$ 所需的最小轮数。 然而,这似乎有些复杂,因此请帮助他!

输入格式

每个测试包含多个测试用例。第一行包含测试用例的数量 $$$t$$$($$1 \le t \le 2 \cdot 10^4$$)。接下来是各测试用例的描述。 每个测试用例的第一行包含两个整数 $$$n$$$、$$k$$($$1 \le n \le 2 \cdot 10^5$$,$$0 \le k \le 2 \cdot 10^{14}$$)。 每个测试用例的第二行包含 $$$n$$$ 个整数 $$$a_0, a_1, \ldots, a_{n - 1}$$$($$1 \le a_i \le 10^9$$)。 每个测试用例的第三行包含 $$$n$$$ 个整数 $$$b_0, b_1, \ldots, b_{n - 1}$$$($$1 \le b_i \le 10^9$$)。 保证所有测试用例的 $$$n$$$ 之和不超过 $$$2 \cdot 10^5$$$。同时保证每个测试用例中 $$$a$$$ 的总和不超过 $$$b$$$ 的总和,且 $$$k$$$ 不超过 $$$a$$$ 的总和。

输出格式

对于每个测试用例,输出在对 $$$a$$$ 进行恰好 $$$k$$$ 次修改后,使得 $$$a$$$ 中所有元素变为 $$$0$$$ 所需的最小轮数。

说明/提示

在第五个测试用例中,$$$a$$$ 的所有元素在恰好 $$$6$$$ 次修改后变为 $$$0$$$。 在第六个测试用例中,Ecrade 可以对 $$$a_3$$$ 进行一次修改,之后 $$$a$$$ 将变为 $$$[1,2,2,4]$$$: - 第一轮操作后,$$a=[3,0,0,0]$$,$$b=[3,1,0,0]$$; - 第二轮操作后,$$a=[0,0,0,0]$$,$$b=[0,1,0,0]$$。 在第七个测试用例中,Ecrade 可以对 $$$a_4$$$ 进行一次修改,之后 $$$a$$$ 将变为 $$$[2,1,1,1]$$$: - 第一轮操作后,$$a=[0,1,0,0]$$,$$b=[0,1,1,0]$$; - 第二轮操作后,$$a=[0,0,0,0]$$,$$b=[0,0,1,0]$$。 翻译由 DeepSeek R1 完成