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 完成