311299: CF1967E2. Again Counting Arrays (Hard Version)
Description
This is the hard version of the problem. The differences between the two versions are the constraints on $n, m, b_0$ and the time limit. You can make hacks only if both versions are solved.
Little R has counted many sets before, and now she decides to count arrays.
Little R thinks an array $b_0, \ldots, b_n$ consisting of non-negative integers is continuous if and only if, for each $i$ such that $1 \leq i \leq n$, $\lvert b_i - b_{i-1} \rvert = 1$ is satisfied. She likes continuity, so she only wants to generate continuous arrays.
If Little R is given $b_0$ and $a_1, \ldots, a_n$, she will try to generate a non-negative continuous array $b$, which has no similarity with $a$. More formally, for all $1 \leq i \leq n$, $a_i \neq b_i$ holds.
However, Little R does not have any array $a$. Instead, she gives you $n$, $m$ and $b_0$. She wants to count the different integer arrays $a_1, \ldots, a_n$ satisfying:
- $1 \leq a_i \leq m$;
- At least one non-negative continuous array $b_0, \ldots, b_n$ can be generated.
Note that $b_i \geq 0$, but the $b_i$ can be arbitrarily large.
Since the actual answer may be enormous, please just tell her the answer modulo $998\,244\,353$.
InputEach test contains multiple test cases. The first line contains the number of test cases $t\ (1 \leq t \leq 10^4)$. The description of the test cases follows.
The first and only line of each test case contains three integers $n$, $m$, and $b_0$ ($1 \leq n \leq 2 \cdot 10^6$, $1 \leq m \leq 2 \cdot 10^6$, $0 \leq b_0 \leq 2\cdot 10^6$) — the length of the array $a_1, \ldots, a_n$, the maximum possible element in $a_1, \ldots, a_n$, and the initial element of the array $b_0, \ldots, b_n$.
It is guaranteed that the sum of $n$ over all test cases does not exceeds $10^7$.
OutputFor each test case, output a single line containing an integer: the number of different arrays $a_1, \ldots, a_n$ satisfying the conditions, modulo $998\,244\,353$.
ExampleInput6 3 2 1 5 5 3 13 4 1 100 6 7 100 11 3 1000 424 132Output
6 3120 59982228 943484039 644081522 501350342Note
In the first test case, for example, when $a = [1, 2, 1]$, we can set $b = [1, 0, 1, 0]$. When $a = [1, 1, 2]$, we can set $b = [1, 2, 3, 4]$. In total, there are $6$ valid choices of $a_1, \ldots, a_n$: in fact, it can be proved that only $a = [2, 1, 1]$ and $a = [2, 1, 2]$ make it impossible to construct a non-negative continuous $b_0, \ldots, b_n$, so the answer is $2^3 - 2 = 6$.
Output
这是一个难题的较难版本。两个版本的区别在于对n、m、b0的限制和时限。只有当两个版本都解决时,才能进行黑客攻击。
小R之前已经数过很多集合,现在她决定数数列。
小R认为,由非负整数组成的数组b0,…,bn是连续的,当且仅当,对于每一个i,满足1≤i≤n,|bi-bi-1|=1。她喜欢连续性,所以她只想生成连续的数组。
如果小R给出b0和a1,…,an,她将尝试生成一个与a不相似的非负连续数组b。更正式地说,对于所有的1≤i≤n,ai≠bi。
然而,小R没有任何数组a。相反,她给你n,m和b0。她想要计算不同的整数数组a1,…,an满足以下条件:
1 ≤ ai ≤ m;
至少可以生成一个非负连续数组b0,…,bn。
注意,bi≥0,但bi可以是任意大的。
由于实际答案可能非常大,请告诉她模998244353的答案。
输入数据格式:
每个测试包含多个测试用例。第一行包含测试用例数t(1≤t≤104)。接下来是测试用例的描述。
每个测试用例的第一行(也是唯一一行)包含三个整数n、m和b0(1≤n≤2∗106、1≤m≤2∗106、0≤b0≤2∗106)——数组a1,…,an的长度,数组a1,…,an的最大可能元素和数组b0,…,bn的初始元素。
保证所有测试用例的n之和不超过107。
输出数据格式:
对于每个测试用例,输出一行,包含一个整数:满足条件的不同数组a1,…,an的数量,模998244353。题目大意: 这是一个难题的较难版本。两个版本的区别在于对n、m、b0的限制和时限。只有当两个版本都解决时,才能进行黑客攻击。 小R之前已经数过很多集合,现在她决定数数列。 小R认为,由非负整数组成的数组b0,…,bn是连续的,当且仅当,对于每一个i,满足1≤i≤n,|bi-bi-1|=1。她喜欢连续性,所以她只想生成连续的数组。 如果小R给出b0和a1,…,an,她将尝试生成一个与a不相似的非负连续数组b。更正式地说,对于所有的1≤i≤n,ai≠bi。 然而,小R没有任何数组a。相反,她给你n,m和b0。她想要计算不同的整数数组a1,…,an满足以下条件: 1 ≤ ai ≤ m; 至少可以生成一个非负连续数组b0,…,bn。 注意,bi≥0,但bi可以是任意大的。 由于实际答案可能非常大,请告诉她模998244353的答案。 输入数据格式: 每个测试包含多个测试用例。第一行包含测试用例数t(1≤t≤104)。接下来是测试用例的描述。 每个测试用例的第一行(也是唯一一行)包含三个整数n、m和b0(1≤n≤2∗106、1≤m≤2∗106、0≤b0≤2∗106)——数组a1,…,an的长度,数组a1,…,an的最大可能元素和数组b0,…,bn的初始元素。 保证所有测试用例的n之和不超过107。 输出数据格式: 对于每个测试用例,输出一行,包含一个整数:满足条件的不同数组a1,…,an的数量,模998244353。